如果值大于100 MB,我尝试将列RAM着色为红色:
Get-Process | Format-Table @{ Label = "PID"; Expression={$_.Id}},
@{ Label = "Name"; Expression={$_.Name}},
@{ Label = "RAM (MB)"; Expression={[System.Math]::Round($_.WS/1MB, 1)}},
@{ Label = "Responding"; Expression={$_.Responding}}
字符串
x1c 0d1x的数据
我尝试使用Write-Host -nonewline,但结果错误。
Get-Process | Format-Table @{ Label = "PID"; Expression={$_.Id}},
@{ Label = "Name"; Expression={$_.Name}},
@{ Label = "RAM (MB)"; Expression={write-host -NoNewline $([System.Math]::Round($_.WS/1MB, 1)) -ForegroundColor red}},
@{ Label = "Responding"; Expression={ write-host -NoNewline $_.Responding -fore red}}
型
的
7条答案
按热度按时间btxsgosb1#
从PowerShell 5.1或更高版本开始,您可以使用VT转义序列向单个列添加颜色,但前提是您的控制台支持VT转义序列(例如Windows 10 Fall Creators Update、Linux或Mac,但不支持Windows 8 w/o控制台模拟器(如ConEmu))。
下面是一个在表达式中指定格式的示例,尽管同样可以在ps1 xml文件中使用:
字符串
和结果输出,请注意,列宽看起来不错,没有多余的空格从转义序列字符。
x1c 0d1x的数据
r1zhe5dt2#
接受的答案是不正确的,可以对列进行着色。获取条件列颜色的解决方案是使用Write-PSObject。
Here are some wonderful examples带有文档代码和解释。
从上面的资源:
字符串
的数据
我通过a GitHub issue to add color formatting to Format-Table发现了这个,这似乎是PowerShell开发人员希望在某个时候添加的功能。
lmyy7pcs3#
您可以使用正则表达式对 * 行 * 进行着色.
字符串
输出:
的数据
omhiaaxx4#
快速的回答是你不能。可以使用Write-Host与颜色,但没有“输出”发送到格式表。
Write-Host的“输出”是一个副作用,它直接将数据发送到控制台,而不是像标准函数那样将数据返回给调用者。
结合@大卫马丁的评论,这里是a link与一个有趣的模式匹配格式颜色函数。
t40tm48m5#
是的,您可以使用ANSI转义颜色并使颜色具有条件:
字符串
dzhpxtsq6#
这是一个不同版本的Jason Shirk's answer后,几年来,现在使用PSStyle在PowerShell 7.4
的数据
字符串
ttisahbt7#
这个例子显示了事件记录的行的交替背景颜色(感谢this post)。根据TimeCreated字段,文本颜色将是蓝色(一个月或更少),黄色(一周或更少)或红色(今天)。请参阅维基百科上的'ANSI转义码'主题以获取颜色转义码。
字符串