如何修改PowerShell脚本仅扫描最新日志文件?
仅扫描最新日志文件的PowerShell脚本修改方案
要让脚本只处理最新的Files*.log日志,只需添加筛选最新文件的逻辑,替换原脚本中直接使用通配符指定路径的部分。以下是修改后的完整脚本:
# 获取最新的Files*.log日志文件 $latestLogFile = Get-ChildItem -Path '\\MyLogFiles\Files*.log' | Sort-Object LastWriteTime -Descending | Select-Object -First 1 # 如果没有找到匹配文件,直接退出避免报错 if (-not $latestLogFile) { Write-Host "未找到匹配的日志文件" exit } $SearchString = 'TOTAL DATA ENTRY' $outputFilePath = "C:\Reports\Results\Success $(get-date -f yyyy-MM-dd).txt" # 仅针对最新日志文件执行扫描 Select-String -Path $latestLogFile.FullName -Pattern $searchString -SimpleMatch | Set-Content $outputFilePath $sendMailMessageSplat = @{ To = 'Joanne.Bloggs@Mail.com' From = 'Joe.Bloggs@Mail.com' Subject = "Weekly logs - $(get-date -f yyyy-MM-dd).txt" Body = 'See attached' Attachments = "C:\Reports\Results\Success $(get-date -f yyyy-MM-dd).txt" SmtpServer = 'mail.server.com' } Send-MailMessage @sendMailMessageSplat
关键修改点说明
- 获取最新文件:通过
Get-ChildItem遍历所有匹配的日志,用Sort-Object LastWriteTime -Descending按修改时间倒序排列,再用Select-Object -First 1提取最新的文件。 - 防错处理:添加
if (-not $latestLogFile)判断,避免目录下没有日志文件时后续命令报错。 - 替换扫描路径:把原脚本中
Select-String的-Path参数从通配符路径改成$latestLogFile.FullName,确保只扫描最新文件。
内容的提问来源于stack exchange,提问作者bob
相关产品推荐
相关产品推荐

