Как добавить условные операторы в Format-Table - PullRequest
0 голосов
/ 28 июня 2019

Сценарий 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 голосов
/ 28 июня 2019

Вам необходимо использовать Write-Host, чтобы указать цвет текста.Сначала преобразуйте вывод Format-Table в простую строку, используя Out-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]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...