自上次检查后计算文件中的字符串匹配

时间:2017-04-25 15:04:43

标签: powershell logging comparison

我正在尝试制作一个日志文件监视器。我有一个PowerShell命令,它给我计算我正在寻找的错误。

我现在如何存储该号码,5分钟后再次计算并报告差异?

这是我的代码:

(Get-Content "file.log" | Select-String -Pattern "HandleProcessingError" -AllMatches).count

1 个答案:

答案 0 :(得分:1)

这是一种非常简单的方式,但它远非理想:

$ErrorCount = (Get-Content "file.log" | Select-String -Pattern "HandleProcessingError" -AllMatches).count
Start-Sleep -Seconds (60*5)

$NewErrorCount = (Get-Content "file.log" | Select-String -Pattern "HandleProcessingError" -AllMatches).count

$ErrorDifference = $NewErrorCount - $ErrorCount

Write-Output "There have been $ErrorDifference new errors"

最好的做法是将计数写入文件,然后将此脚本设置为每5分钟运行一次作为某种任务:

$ErrorCountFile = 'ErrorCount.XML'
$ErrorCount = (Get-Content "file.log" | Select-String -Pattern "HandleProcessingError" -AllMatches).count

If (Test-Path $ErrorCountFile) {
    $PrevErrorCount = Import-Clixml -Path $ErrorCountFile
    $ErrorDifference = $ErrorCount - $PrevErrorCount

    Write-Output "There have been $ErrorDifference new errors"
}
$ErrorCount | Export-Clixml -Path $ErrorCountFile -Force