2017-08-23 2 views
2

Ich habe diesen Code, die Anzahl von Bytes zurückgibt:Konvertieren von Bytes GB oder MB gibt nichts

$size = Get-ChildItem $userAccount.homeDirectory -Recurse | Measure-Object -Property Length -Sum 

Dies funktioniert gut, ist aber nicht sehr benutzerfreundlich, so möchte ich Megabyte oder Gigabyte konvertieren .

Nach googeln und an Beispielen suchen, habe ich das versucht:

$size = "{0:N2}" -f ((Get-ChildItem $userAccount.homeDirectory -Recurse | Measure-Object -Property Length -Sum).Sum/1MB) 

Allerdings gibt Powershell nichts.

Irgendeine Idee warum?

Bearbeiten: Posting vollständigen Code.

Funktion:

Function Get-ADHomeDirectorySize 
{ 
Param 
(
    [Parameter(ValueFromPipeline=$true,Mandatory=$true)] 
    [Microsoft.ActiveDirectory.Management.ADUser]$User 
) 
Begin 
{ 
    $HomeD = @() 
    $size = $nul 
} 
Process 
{ 
    ForEach($userAccount in $User) 
    { 
     $userAccount = Get-ADUser $userAccount -properties homeDirectory 
     $size = "{0:N2}" -f ((Get-ChildItem $userAccount.homeDirectory -Recurse | Measure-Object -Property Length -Sum).Sum/1MB) 
     If($userAccount.homeDirectory -eq $nul) 
     { 
      Write-Host "`nERROR -- User: $userAccount has no Home Directory`n" -foregroundcolor red 
      Return 
     } 
     $obj = New-Object System.Object 
     $obj | add-member -type NoteProperty -name User -value $userAccount.Name 
     $obj | add-member -type NoteProperty -name HomeDirectory -value $userAccount.homeDirectory 
     $obj | add-member -type NoteProperty -name HomeDirectorySize -value $size.sum 
     $HomeD += $obj 

    } 
} 
End 
{ 
    $HomeD 
} 
} 

Script Bericht zu generieren, basierend auf einer Eingangsliste von Benutzer-IDs:

Get-Content brukerlistetest.txt | Foreach-Object {Get-ADUser $_ -properties homeDirectory | ? {$_.homeDirectory -ne $nul} | Get-ADHomeDirectorySize | sort HomeDirectorySize | Format-Table -HideTableHeaders | out-file output.txt -width 120 -append} 
+2

Works4me. Können Sie den Fehler in einem neuen Terminal/ISE nur mit der 2. Zeile reproduzieren? – wOxxOm

+0

Ich denke, ich werde nur den gesamten Code posten .. Funktion –

+0

Vollständiger Code geschrieben. –

Antwort

1

Sie mathematische Operationen auf Ihrem ersten Beispiel durchführen kann:

$size = (Get-ChildItem $userAccount.homeDirectory -Recurse | Measure-Object -Property Length -Sum)/1MB # or/1GB 

PowerShell hat Konstanten, die Bytes definieren.

Wenn Sie es wollen, eine Zeichenfolge sein, können Sie eine Zeichenfolge subexpression verwenden:

$size = "$((GCI $userAccount.homeDirectory -Recurse | Measure Length -Sum)/1MB)MB" 
Verwandte Themen