param ( $User ) [hashtable]$ReturnHash = @{} #Get Folder Size $item = $User.homeDirectory $params = New-Object System.Collections.Arraylist $params.AddRange(@("/L","/S","/NJH","/BYTES","/FP","/NC","/NDL","/TS","/XJ","/R:0","/W:0")) $countPattern = "^\s{3}Files\s:\s+(?\d+).*" $sizePattern = "^\s{3}Bytes\s:\s+(?\d+(?:\.?\d+)).*" $return = robocopy $item NULL $params If ($return[-5] -match $countPattern) { $Count = $matches.Count } If ($Count -gt 0) { If ($return[-4] -match $sizePattern) { $Size = $matches.Size } } Else { $Size = 0 } $object = New-Object PSObject -Property @{ Size = ([math]::Round($Size,2)) } $object.pstypenames.insert(0,'IO.Folder.Foldersize') $homeDirSize = $object | select -expandproperty size $Size=$Null $homeDirSize = $homeDirSize / 1MB $Name = $User.GivenName+" "+$User.Surname #Add information to hashtable $ReturnHash.Name = $Name $ReturnHash.HomeDir = $User.homeDirectory $ReturnHash.HomeDirSize = $homeDirSize #Return hashtable Return $ReturnHash