2017-08-23 3 views
2

je suis arrivé ce code, qui retourne le nombre d'octets:Conversion d'octets GB ou MB retourne rien

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

Cela fonctionne bien, mais il est pas très facile à utiliser, donc je veux convertir en méga-octets ou giga-octets .

Après googler et en regardant des exemples, j'ai essayé ceci:

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

Cependant, retourne PowerShell rien.

Une idée pourquoi?

Modifier: Publication du code complet.

Fonction:

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 pour générer le rapport basé sur une liste d'entrée d'ID utilisateur:

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. Pouvez-vous reproduire le bug dans un nouveau terminal/ISE avec juste la 2ème ligne? – wOxxOm

+0

Je pense que je vais juste poster le code entier .. Fonction –

+0

Code complet affiché. –

Répondre

1

Vous pouvez effectuer des opérations mathématiques sur votre premier exemple:

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

PowerShell a des constantes qui définissent des octets.

Si vous voulez qu'il soit une chaîne, vous pouvez utiliser une sous-expression de chaîne:

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