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

PowerShell脚本需求:监控日志错误重启批处理(多客户端适配)

完善后的PowerShell自动化监控脚本

功能说明

  • 循环监控服务器上所有客户端的日志文件,检测指定错误关键词TRANSPORT-LEVEL-ERROR
  • 触发批处理文件重启对应客户端的处理流程
  • 适配同一服务器上的多客户端场景

完整脚本代码

# 配置参数 - 根据实际环境修改
$errorKeyword = "TRANSPORT-LEVEL-ERROR"
$restartBatchPath = "D:\XSP\RestartClientProcessing.bat"
$clientRootDir = "D:\XSP"
$checkInterval = 5  # 日志检查间隔(秒)

while ($true) {
    # 遍历所有客户端的ImportHelpers日志目录
    $clientLogDirectories = Get-ChildItem -Path $clientRootDir -Directory | ForEach-Object {
        Join-Path $_.FullName "ImportHelpers"
    } | Where-Object { Test-Path $_ }

    foreach ($logDir in $clientLogDirectories) {
        # 获取最新日志文件的最后5行,检查是否存在目标错误
        $latestLog = Get-ChildItem -Path $logDir -File | Sort-Object LastWriteTime -Descending | Select-Object -First 1
        if ($latestLog) {
            $hasError = Get-Content $latestLog.FullName -Tail 5 | Select-String -Pattern $errorKeyword
            
            if ($hasError) {
                $clientName = (Split-Path (Split-Path $logDir -Parent) -Leaf)
                Write-Host "[$(Get-Date)] 客户端[$clientName]检测到错误,执行重启批处理..."
                # 执行批处理,传递客户端名称作为参数(按需使用)
                Start-Process -FilePath $restartBatchPath -ArgumentList $clientName -Wait
            }
        }
    }

    Start-Sleep -Seconds $checkInterval
}

关键优化与修正

  • 修复原脚本语法错误:移除无效的Get-Content =赋值写法,改为正确的错误匹配判断逻辑
  • 多客户端适配:通过遍历服务器上的客户端根目录,自动识别所有客户端的日志路径
  • 替换服务重启为批处理触发:使用Start-Process执行指定批处理文件,支持传递客户端标识参数以实现精准重启
  • 增强日志可读性:添加时间戳和客户端名称,便于定位问题来源
  • 配置集中化:将可变参数放在脚本开头,无需修改核心逻辑即可适配不同环境

运行注意事项

  • 需以管理员权限运行PowerShell脚本,避免权限不足导致的目录访问或批处理执行失败
  • 批处理文件需根据实际业务逻辑编写,例如停止客户端进程、清理临时数据、重启处理服务等
  • 若客户端日志目录结构与示例不同,调整$clientRootDir和目录遍历逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:02:09