Powershell 脚本选择按数字排序输出

Powershell 脚本选择按数字排序输出

以下 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% 

相关内容