PS - 在特定时间范围内检查日志文件中的特定文本

PS - Check a log file for particular text within a certain timeframe

提问人:SuperZee 提问时间:7/31/2023 更新时间:7/31/2023 访问量:26

问:

我正在尝试让它在 PowerShell 脚本中工作,但它返回了未定义的内容。

$file = Get-Content "C:\log\clock.log"
$checktime = $(Get-Date).AddHours(-1)
$containsWord = $file | %{$_ -match "Calling ClockServer.stop()"} | $checktime
if ($containsWord -contains $true) {
    Write-Host "Calling ClockServer.stop() text has been found"
} else {
    Write-Host "Calling ClockServer.stop() text hasn't been found"
}

真的很感激你的帮助。

干杯

如果我删除变量末尾的部分,该脚本就会起作用。| $checktime$containsWord

PowerShell 文件 文本 包含 GetDate

评论

2赞 Mathias R. Jessen 7/31/2023
你说的“它回来了,没有定义”到底是什么意思?这是错误消息的一部分吗?如果是这样,请完整地发布错误消息。你希望用什么实现?... | $checktime
1赞 KG-DROID 7/31/2023
我不太确定你想用那里的$checktime做什么,你不能将文件的行通过管道传递到这样的字符串中。您是否试图记下在文件中找到该行的时间?同样,当使用 -match 时,它使用正则表达式,因此您必须转义 .和 ( ) 字符,如下所示:“调用 ClockServer\.stop()” regex101.com 是一个很棒的网站,用于构建正则表达式的 for -match 语句
1赞 lit 7/31/2023
提供几行文件会很有帮助。clock.log
0赞 SuperZee 8/8/2023
因此,我想检查过去 1 小时内日志文件中是否出现了错误行,否则它会不断提醒我错误存在,我可能已经收到警报并自行重新启动了服务。

答: 暂无答案