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
相关产品推荐
相关产品推荐

