如何在格式表中添加条件语句

时间:2019-06-28 05:30:39

标签: powershell

PowerShell脚本:

Get-Wmiobject -class Win32_logicaldisk -computername XXXXXXX -filter`
 "drivetype=3" | Sort-Object -Property DeviceID | Format-Table -Property DeviceID,`
 @{label='FreeSpace(MB)'; expression={$_.Freespace / 1MB -as `[int]}},@{label='Size(GB)'; expression={$_.Size / 1GB -as `[int]}},@{label='%Free'; expression={$_.FreeSpace / $_.Size * 100 -as [int]}}

输出:

 DeviceID FreeSpace(MB) Size(GB) %
 -------- ------------- -------- -----
 C:               10139       99    10
 D:              258235      300    84
 E:               51098       50   100
 F:               41964       50    82

我的问题是,如果可用空间小于15%,此设备行将显示为红色。

1 个答案:

答案 0 :(得分:0)

您需要使用Write-Host来指定文本颜色。
首先,使用Format-TableOut-String -Stream的输出转换为简单的字符串。之后,为每个条件指定文本颜色,并使用Write-Host在屏幕上显示。

Get-Wmiobject -Class Win32_LogicalDisk -ComputerName . -Filter "drivetype=3" |
Sort-Object -Property DeviceID | Format-Table -Property @(
    "DeviceID"
    @{ l = 'FreeSpace(MB)'; e = { $_.Freespace / 1MB -as [int] } }
    @{ l = 'Size(GB)';      e = { $_.Size / 1GB -as [int] } }
    @{ l = '%Free';         e = { $_.FreeSpace / $_.Size * 100 -as [int] } }

) | Out-String -Stream | ForEach-Object {
    Write-Host $_ -ForegroundColor ("White", "Red")[$_ -match "\d+$" -and [int]$Matches[0] -lt 15]
}