我正在使用基于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