You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为PSCustomObject中“Not Installed”值设置红色高亮

解决PowerShell中“Not Installed”文本红色高亮问题

因为PSCustomObject本身不存储颜色渲染信息,颜色是在控制台输出时动态控制的,以下两种方法可以实现你的需求:

方法1:保留对象结构的着色输出(推荐)

通过Format-Table自定义列,使用ANSI转义序列为特定文本着色,同时保留对象的可操作性:

# 假设你的$result是已生成的PSCustomObject集合
$result | Format-Table "Target-App", @{
    Name = "Installed-App"
    Expression = { 
        if ($_."Installed-App" -eq "Not Installed") {
            # ANSI转义序列:31表示红色,0表示恢复默认颜色
            "`e[31m$($_.'Installed-App')`e[0m"
        } else {
            $_."Installed-App"
        }
    }
} -AutoSize

注意:ANSI转义序列在PowerShell 5.1(Windows 10 1607及以上版本)、PowerShell Core/7中默认支持。如果是旧版PowerShell,需先执行[Console]::OutputEncoding = [System.Text.Encoding]::UTF8启用支持。

方法2:逐行控制输出颜色(简单直观)

如果不需要保留对象结构,仅需控制台展示,可直接用Write-Host逐行输出并指定颜色:

# 输出表头
Write-Host "Target-App`tInstalled-App" -ForegroundColor Cyan

# 遍历结果集输出
foreach ($item in $result) {
    Write-Host "$($item.'Target-App')`t" -NoNewline
    if ($item.'Installed-App' -eq "Not Installed") {
        Write-Host $item.'Installed-App' -ForegroundColor Red
    } else {
        Write-Host $item.'Installed-App'
    }
}

额外说明

  • 颜色设置仅在控制台输出时生效,导出到文本/CSV文件时不会保留颜色信息(纯文本文件不支持格式)。
  • 若在PowerShell ISE中运行,ANSI转义序列可能无效,此时优先使用方法2。

内容的提问来源于stack exchange,提问作者Chirag Darji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:45:37