Powershell 颜色编码可以获得内容结果

Powershell 颜色编码可以获得内容结果,powershell,powershell-2.0,Powershell,Powershell 2.0,我有一个powershell脚本,它监视日志文件,过滤出感兴趣的位,然后在写入文件时将这些位呈现给我。工作得很好。兴趣线是: get-content "$logFile" -wait | where { select-string $searchTerm -inp $_ } 现在我想变得更花哨 我想字体颜色改变,每次遇到一个特定的术语。我可以很容易地设置字体颜色,但是你会如何用上面的语句即时设置字体颜色呢 编辑:算出了答案,但在8小时内无法发布答案。明天将上载它。试试看 Get-Content

我有一个powershell脚本,它监视日志文件,过滤出感兴趣的位,然后在写入文件时将这些位呈现给我。工作得很好。兴趣线是:

get-content "$logFile" -wait | where { select-string $searchTerm -inp $_ }
现在我想变得更花哨

我想字体颜色改变,每次遇到一个特定的术语。我可以很容易地设置字体颜色,但是你会如何用上面的语句即时设置字体颜色呢

编辑:算出了答案,但在8小时内无法发布答案。明天将上载它。

试试看

Get-Content $logFile -Wait |
  Select-String $searchTerm | 
  ForEach {write-host -ForegroundColor red $_.line}

如果你正在寻找提供选择性颜色编码的东西,那么试试这样的东西

首先,设置一个助手函数以选择适当的颜色:

function Get-LogColor {
    Param([Parameter(Position=0)]
    [String]$LogEntry)

    process {
        if ($LogEntry.Contains("DEBUG")) {Return "Green"}
        elseif ($LogEntry.Contains("WARN")) {Return "Yellow"}
        elseif ($LogEntry.Contains("ERROR")) {Return "Red"}
        else {Return "White"}
    }
}
然后执行一行如下所示:

gc -wait $logFile | ForEach {Write-Host -ForegroundColor (Get-LogColor $_) $_}

你的回答更具体,符合我的要求。它可以工作,但也随机打印以下错误:
Get LogColor:无法将参数绑定到参数“LogEntry”,因为它是空字符串。在第1行,字符数为156+。。。(Get LogColor$\u}+~~+CategoryInfo:InvalidData:(:)[Get LogColor],ParameterBindingValidationException+FullyQualifiedErrorId:ParameterArgumentValidationErrorRemptyString不允许,Get LogColor
我没有看到您的源数据,但我只能假设您的日志文件中有空行,从技术上讲,这将打破“强制性=$true”的约束规则。我在回答中删除了这一点;唯一的结果是,您的空白日志文件行将被直接传递回控制台,但这可能发生在一个普通的“getcontent(gc)”语句anyway.thnkx中,现在它可以正常工作了。这应该是公认的答案