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

如何用PowerShell 5+解析TXT日志表格并排查FAILED项

使用PowerShell解析日志文件中的FAILED列数据

核心脚本实现

下面是针对需求编写的PowerShell脚本,适用于PowerShell 5及以上版本:

# 遍历指定目录下的所有.txt日志文件
Get-ChildItem -Path "C:\Your\Log\Directory" -Filter "*.txt" -File | ForEach-Object {
    # 读取文件全部内容
    $content = Get-Content -Path $_.FullName -Raw
    # 匹配日志末尾的目标表格区域
    $tableMatch = [regex]::Match($content, '(?s)            Total    Copied   Skipped  Mismatch    FAILED    Extras.*?Bytes :.*?$')
    if ($tableMatch.Success) {
        # 提取表格中的数据行(Dirs/Files/Bytes开头的行)
        $tableLines = $tableMatch.Value -split "`n" | Where-Object { $_ -match '^( Dirs |Files |Bytes )' }
        foreach ($line in $tableLines) {
            # 按空白字符拆分每行,提取对应列数据
            $parts = $line -split '\s+' | Where-Object { $_ }
            $category = $parts[0].TrimEnd(':')
            $failedCount = $parts[5]
            # 输出解析结果
            Write-Host "文件: $($_.Name) | 分类: $category | FAILED数量: $failedCount"
        }
    } else {
        Write-Warning "文件 $($_.Name) 未找到目标表格"
    }
}

脚本关键部分说明

  • 文件遍历:Get-ChildItem指定日志目录,筛选.txt格式文件。
  • 表格定位:用正则表达式匹配从表头到Bytes行的完整表格,(?s)确保正则能跨换行匹配内容。
  • 数据提取:拆分表格内容后,仅保留有效数据行;再按空白拆分每行,第6个元素(索引5)即为FAILED列的数值。
  • 结果反馈:正常解析的文件输出对应数据,未找到表格的文件输出警告提示。

自定义调整提示

  • 将-Path参数值替换为你的日志文件实际存储目录。
  • 若日志表格格式有细微变动,可调整正则表达式中的表头匹配字符串,保证能准确定位目标表格区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:42:06