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

在PowerShell中为数组筛选器添加控制台颜色标识

为PowerShell日志监控添加特定内容的颜色高亮

要实现监控VRChat日志时给指定条目添加颜色,你需要把原来的筛选逻辑改成逐行处理并控制输出颜色的方式——因为Select-String本身不支持带颜色输出。以下是修改后的代码:

# 定义需要匹配的筛选规则及对应高亮颜色
$filterRules = @(
    @{ Pattern = "[Behaviour] OnPlayerJoined"; Color = "Green" },
    @{ Pattern = "[Behaviour] OnPlayerLeft "; Color = "Yellow" },
    @{ Pattern = "[API] Received Notification: <Notification"; Color = "Cyan" }
)

# 设置控制台基础显示样式
mode 300
$host.UI.RawUI.ForegroundColor = "White"
$host.UI.RawUI.BackgroundColor = "Black"

# 切换到VRChat日志所在目录
$vrchatLogDir = "C:\Users\$env:UserName\AppData\LocalLow\VRChat\VRChat"
Set-Location -Path $vrchatLogDir

# 获取最新生成的日志文件
$latestLog = Get-ChildItem -File | Sort-Object -Descending LastWriteTime | Select-Object -First 1

# 实时读取日志并按规则添加颜色高亮输出
Get-Content -Path $latestLog.FullName -Wait | ForEach-Object {
    $currentLine = $_
    $isMatched = $false

    # 遍历所有筛选规则,匹配到则用对应颜色输出
    foreach ($rule in $filterRules) {
        # 转义正则特殊字符,避免匹配出错
        if ($currentLine -match [regex]::Escape($rule.Pattern)) {
            Write-Host $currentLine -ForegroundColor $rule.Color
            $isMatched = $true
            break
        }
    }

    # 未匹配任何规则时,用默认颜色输出
    if (-not $isMatched) {
        Write-Host $currentLine
    }
}

关键改动说明:

  • 将原有的筛选字符串数组替换成带颜色映射的规则集合,可以灵活给不同匹配内容设置不同颜色
  • 用ForEach-Object逐行处理日志内容,替代Select-String,这样能通过Write-Host控制输出颜色
  • 使用[regex]::Escape()转义字符串中的正则特殊字符(比如[]),避免匹配逻辑出错
  • 匹配到规则的行会按指定颜色输出,未匹配的行保留默认白色输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:01:21