首页 > 解决方案 > 添加低于特定值的颜色代码以查看硬盘空间?

问题描述

我只是想知道是否有办法在低于某个值时为结果添加颜色?

我运行一个脚本来从服务器中提取驱动器大小,我想声明返回的某个输出值是不同的颜色,所以低于 15GB 的任何东西都是橙色或类似的东西。

这甚至可能吗?

PS C:\Windows\system32> Foreach ($server in $servers)
>> {
>>     $disks = Get-WmiObject Win32_LogicalDisk -ComputerName $server -Filter DriveType=3 |
>>         Select-Object DeviceID,
>>             @{'Name'='Size'; 'Expression'={[math]::truncate($_.size / 1GB)}},
>>             @{'Name'='Freespace'; 'Expression'={[math]::truncate($_.freespace / 1GB)}}
>>
>>     $server
>>
>>     foreach ($disk in $disks)
>>     {
>>         $disk.DeviceID + $disk.FreeSpace.ToString("N0") + "GB / " + $disk.Size.ToString("N0") + "GB"
>>
>>      }
>>  } 

请注意不是我写的脚本,我是在网上找到的。

补充一点,这里是我的部分输出的一个例子:

RDS20
C:70GB / 119GB
RDS21
C:68GB / 119GB
RDS22
C:66GB / 119GB
RDS23
C:70GB / 119GB
RDS24
C:14GB / 119GB
RDS25
C:78GB / 129GB

在 RDS24 显示 14GB 的地方,我希望它是一种与众不同的颜色。所以低于 15GB 的任何东西都是不同的颜色。

标签: powershell

解决方案


使用 write-host 很简单:

foreach ($disk in $disks) {
    # Set the output to a variable instead:
    $space = $disk.DeviceID + $disk.FreeSpace.ToString("N0") + "GB / " + $disk.Size.ToString("N0") + "GB"
    # if free space is less than 15 GB, make it red:
    if ($disk.Freespace -lt 15) {
        Write-Host $space -ForegroundColor Red
    }
    else {
        Write-Host $space
    }
}

输出:

serverA
C:20GB / 99GB
D:112GB / 149GB
serverB
C:1GB / 99GB  ## This line is red

我个人更喜欢[math]::round()磁盘大小,但这只是偏好。


推荐阅读