我正在使用基於http://www.powershellneedfulthings.com/?p=36的Power Shell腳本來檢查沒有分配驅動器盤符的卷的磁盤空間。無驅動器盤符的驅動器的Powershell可用磁盤空間
該腳本工作得很好,但我想過濾只顯示有少於10%的可用磁盤空間的驅動器。我遇到了使用哈希表的where-object過濾器的麻煩。
# calculations for displaying disk size information
$TotalGB = @{Name="Capacity(GB)";expression={[math]::round(($_.Capacity/ 1GB),2)}}
$FreeGB = @{Name="FreeSpace(GB)";expression={[math]::round(($_.FreeSpace/1GB),2)}}
$FreePerc = @{Name="Free(%)";expression={[math]::round(((($_.FreeSpace/1GB)/($_.Capacity/1073741824)) * 100),0)}}
# array declarations
$volumes = @()
# import server names to check
$servers = (Get-Content .\servers.txt)
# check disk space for volumes without drive letter
foreach ($server in $servers){
$volumes += Get-WmiObject -computer $server win32_volume | Where-Object {$_.DriveLetter -eq $null -and $_.Label -ne "System Reserved"}
}
$volumes | Select SystemName, Label, $TotalGB, $FreeGB, $FreePerc | Format-Table -AutoSize
我想的是:
Where-Object {$FreePerc -le 10}
的電流輸出爲:
SystemName Label Capacity(GB) FreeSpace(GB) Free(%)
---------- ----- ------------ ------------- ----
SERVER01 X:\data\ 9.97 0.89 9
SERVER01 X:\log\ 9.97 1.20 12
SERVER01 X:\info\ 9.97 3.49 35
我想只顯示有不到10%的可用磁盤空間的卷。所以在這種情況下,只應顯示第一個條目。
謝謝!
@ arco444感謝,但是這似乎並沒有產生任何影響或者 – powersheller 2014-10-07 12:38:37
你有一些示例輸出,那麼,我們可以看到什麼,我們需要過濾?你也可以在'Format-table'之前加上'Where-Object {$ FreePerc -le 10}'正確 – Matt 2014-10-07 14:39:21
@Matt我已經將輸出添加到上面的代碼中。當我在'Format-table'之前添加'Where-Object {$ FreePerc -le 10}'時,我會得到一個錯誤:'對運算符'-le'的錯誤參數:無法比較「System.Collections.Hashtable」 「10」。錯誤:「不能將類型」System.Int32「的」10「值轉換爲鍵入」System.Collections.Hashtable「。」。 – powersheller 2014-10-07 14:53:32