脚本需要解析文件夹中的最新日志文件,查找关键字字符串,如果发现它应该执行命令来运行我的tshark +发送电子邮件。
第二次运行时,它应该忽略最后一次查找并查找下一次出现(if,any)。
答案 0 :(得分:0)
这应该有效:
$logfile = "..."
Get-Content $logfile | ? { $_ -match "keyword" } | % {
command
break
}
要忽略之前运行的匹配,您需要存储当前匹配的一些表示标准(例如时间戳)并将其包含在您的过滤器中。但是,如果不知道你的日志文件是什么样的话,就无法帮助你。
编辑:如果每行中都有时间戳,则可以将上次运行的时间戳存储在文件中,并将其用于比较。
$logfile = "..."
$lastfile = "C:\path\to\lastmatch.txt"
if (Test-Path -LiteralPath ) {
$last = Get-Date (Get-Content $lastfile)
} else {
$last = Get-Date "1970-01-01 00:00:00" # reference date
}
$pattern = '^l(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2]).*keyword'
Get-Content $logfile | ? {
$_ -match $pattern -and (Get-Date $matches[1]) -gt $last
} | select -Last 1 | % {
command
$matches[1] | Out-File $lastfile # remember date of last match
}