如何使用powershell脚本在日志的最后10分钟内搜索模式

时间:2018-04-20 23:57:32

标签: powershell

我正在尝试在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'仅

请指教。感谢

1 个答案:

答案 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/yyyydd/mm/yyyy日期格式,因为结构相同。但是,如果文件使用与系统相反的方式,则Get-Date解析模式可能会遇到困难。例如,您的示例中的格式在英国可以正常运行(dd/mm/yyyy),但在美国可能会失败(mm/dd/yyyy) - 我还没有对其进行测试,只是警告基于以前的日期问题。