我正在尝试在Powershell中创建一个日志文件监视器。要求是使用Powershell在日志文件中搜索最近(最后10分钟日志打印)的模式。 日志文件的格式如下:
20/04/2018 23:15:28: some information
20/04/2018 23:16:28: some information
20/04/2018 23:17:28: some information
:
20/04/2018 23:55:28: some information
20/04/2018 23:56:28: some information
因此,例如,脚本在23:58运行,然后它应该在日志打印中搜索一个模式,在' 20/04/2018 23:48'和' 20/04/2018 23:48'仅
请指教。感谢
答案 0 :(得分:1)
你总是可以从这样的文本文件中获取最后几个条目,比如10:
Get-Content .\data.txt -Tail 10
当然,这可能不是最近10分钟。这是一个选项:
Get-Content .\data.txt |
ForEach-Object {$threshold = (Get-Date).AddMinutes(-10)}{
if($_ -match "^(?<timestamp>(\d{2}/){2}\d{4} (\d{2}:){2}\d{2}):.*$")
{
if((Get-Date $Matches.timestamp) -gt $threshold)
{
$_
}
}
}
当然,模式匹配适用于mm/dd/yyyy
和dd/mm/yyyy
日期格式,因为结构相同。但是,如果文件使用与系统相反的方式,则Get-Date
解析模式可能会遇到困难。例如,您的示例中的格式在英国可以正常运行(dd/mm/yyyy
),但在美国可能会失败(mm/dd/yyyy
) - 我还没有对其进行测试,只是警告基于以前的日期问题。