以下 powershell 脚本输出服务器磁盘空间报告。
有没有办法按降序或升序对“百分比”数据进行排序?
[脚本]
$computers | ForEach {
$Disks = Get-WMIObject Win32_Logicaldisk -ComputerName $_ -Filter "Drivetype=3" -Credential $cred -ErrorAction SilentlyContinue |
Select PSComputername,
DeviceID,
@{Name="Size GB";Expression={$_.Size/1GB -as [int]}},
@{Name="Used";Expression={ (($_.Size/1GB -as [int]) - ($_.Freespace/1GB -as [int])) }},
@{Name="Free";Expression={($_.Freespace/1GB -as [int])}},
@{Name="Percent";Expression={[math]::Round((($_.Freespace/1GB -as [int]) / ($_.Size/1GB -as [int]) ),2).toString("P") }}
$DiskSizeReport += $Disks
}
$DiskSizeReport | Select PSComputername, DeviceID, 'Size GB','Used','Free','Percent'
输出:
PS计算机名称 | 设备ID | 国标尺寸 | 用过的 | 自由的 | 百分 |
---|---|---|---|---|---|
服务器 1 | 埃: | 1024 | 四十七 | 977 | 95,00% |
服务器 1 | F: | 500 | 131 | 369 | 74,00% |
服务器 1 | C: | 300 | 100 | 200 | 67,00% |
答案1
将以下内容附加到您的命令。
上升 :
| Sort-Object -Property Percent
降序:
| Sort-Object -Property Percent -Descending
答案2
Sort-Object
也可以处理自定义属性,因此使用它您需要将百分比列中的字符串值转换为 [double] 数值才能对表进行正确排序。
看到你的情况ToString("P")
输出百分比为逗号作为小数点,您也需要将其更改为点:
$DiskSizeReport |
Sort-Object { [double]($_.Percent -replace '%' -replace ',', '.') } |
Select PSComputername, DeviceID, 'Size GB','Used','Free','Percent'
输出
PSComputerName DeviceID Size GB Used Free Percent
-------------- -------- ------- ---- ---- -------
Server 1 C: 300 100 200 67,00%
Server 1 F: 500 131 369 74,00%
Server 1 E: 1024 47 977 95,00%