2017-08-23 33 views
2

我得到這個代碼,它返回的字節數:從字節到GB或MB轉換沒有返回

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

這工作得很好,但不是很方便,所以我想轉換爲兆字節或千兆字節。

谷歌搜索和尋找例子之後,我已經試過這樣:

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

然而,PowerShell會返回什麼。

任何想法爲什麼?

編輯:張貼完整的代碼。

功能:

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。你可以用第二行重現新終端/ ISE中的錯誤嗎? – wOxxOm

+0

我想我只是發佈整個代碼.. 功能 –

+0

完整的代碼發佈。 –

回答

1

您可以在第一個例子進行數學運算:

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

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 
} 
} 

腳本基於用戶ID的輸入列表生成報告PowerShell具有定義字節的常量。

如果你希望它是一個字符串,你可以使用一個字符串子表達式:

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