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

PowerShell提取日志信息:调整输出格式与移除多余字符求助

解决PowerShell日志提取的格式问题

核心思路

原代码分两次批量提取两类日志,导致先输出完所有Type 1再输出Type 2。要实现交替显示,得先把两类日志分别整理成列表,再按顺序交叉输出,同时清理掉多余的空格和等号。

修改后的代码

# 定义要匹配的错误类型
$statusTypes = "Type 1", "Type 2"

# 一次性读取日志文件,避免重复读取磁盘
$allLogs = Get-Content C:\blah\Logs\StatusErrors.TXT

# 分别收集两类日志,同时清理多余空格和首尾等号
$type1Entries = $allLogs | Select-String $statusTypes[0] | ForEach-Object {
    # 把连续空格替换成单个,去掉首尾的等号,可根据实际日志调整规则
    $_.Line -replace '\s+', ' ' -replace '^=+|=+$', ''
}
$type2Entries = $allLogs | Select-String $statusTypes[1] | ForEach-Object {
    $_.Line -replace '\s+', ' ' -replace '^=+|=+$', ''
}

# 取两类日志中数量较多的那个长度,确保所有条目都能输出
$maxCount = [Math]::Max($type1Entries.Count, $type2Entries.Count)

# 交替拼接两类日志内容
$resultContent = for ($i = 0; $i -lt $maxCount; $i++) {
    if ($i -lt $type1Entries.Count) { $type1Entries[$i] }
    if ($i -lt $type2Entries.Count) { $type2Entries[$i] }
}

# 将结果写入文件(用Set-Content会覆盖原有内容,如需追加可换成Add-Content)
$resultContent | Set-Content C:\blah\Logs\StatusErrorsresult.txt

关键说明

  • 一次性读取日志文件,比原代码循环读两次更高效。
  • 用-replace处理多余符号:\s+匹配连续空格替换成单个,^=+|=+$匹配首尾的等号并删除,你可以根据日志里实际的多余符号调整正则规则。
  • 先把两类日志存成数组,再按索引交替取出条目,实现交替显示的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:31:23