2013-12-12 2 views
0

Я создаю отчет для диска, но вам нужна помощь, пожалуйста. Вот код:Свойство локального диска PowerShell без вывода

$outputs = @() 
$disks = get-wmiobject -class "Win32_LogicalDisk" -Filter 'driveType=3' -namespace "root\CIMV2" 
foreach ($disk in $disks) { 
    $output = New-Object PSObject -Property @{ 
     deviceID  = $disk.caption 
     FileSystem = $disk.fileSystem 
     FreeSpace = $disk.freeSpace/1GB 
     Size   = $disk.size/1GB 
     VolumeName = $disk.volumeName 

     used = "{0:N1}" -f ((("{0:N1}" -f ($disk.size/1gb)).ToString().replace(",",".") - ("{0:N1}" -f ($disk.freespace/1gb)).ToString().replace(",",".")) / ("{0:N1}" -f ($disk.size/1gb)).ToString().replace(",",".") * 100) 

     used2 = $used 
    } 
    $outputs += $output 
} 
$outputs | select deviceID, VolumeName, size, used, used2 | Format-Table 

Все это хорошо, но ничего в переменной used2

deviceID VolumeName    Size used used2 
-------- ----------    ---- ---- ----- 
C:  win  49,1992149353027 87,4 
D:  data  170,701168060303 70,7 

ответ

0

$used не существует в качестве переменной в этой области видимости, поэтому used2 создается в $null.

Вам необходимо создать переменную $usedдо по телефону New-Object. Кроме того, вы делаете далеко слишком много форматирования при расчете используемого процента - сохраните форматирование до самого конца. Ниже я сделал оба изменения

$used = "{0:P1}" -f (($disk.size - $disk.FreeSpace)/$disk.size); 
$output = New-Object PSObject -Property @{ 
     deviceID  = $disk.caption 
     FileSystem = $disk.fileSystem 
     FreeSpace = $disk.freeSpace/1GB 
     Size   = $disk.size/1GB 
     VolumeName = $disk.volumeName 
     used = $used 
     used2 = $used 
     } 
Смежные вопросы