gpt4 book ai didi

powershell - 使用 Get-Content 监视日志文件 - 等到一天结束

转载 作者:行者123 更新时间:2023-12-02 18:04:37 24 4
gpt4 key购买 nike

我有一个使用 get-Content 监视日志文件的脚本,它等待写入新行,以便检测更改。记录器每天都会更改日志文件的名称,使其成为 System_$date.log。

我试图让我的 Get-Content 等待新行并在日期更改时中断,然后使用文件名中的新日期重新执行自身。有人知道如何做到这一点吗?

谢谢

编辑

脚本如下所示:

Get-Content System_201371.log -wait | where {$_ -match "some regex"} | 
foreach {
send_email($_)
}

文件名 System_201371 每天都会变化,它将是 System_201372 等等,而且这个脚本作为服务运行,我需要它用新的文件名来中断并重新执行自身

最佳答案

您可以使用 Jobs 来实现此目的。在某些后台作业中读取文件,并让“前台”脚本等待,直到日期发生变化。一旦日期改变,终止旧的工作并开始一项新的工作并查看新文件。

while($true)
{
$now = Get-Date
$fileName = 'System_{0}{1}{2}.log' -f $now.Year, $now.Month, $now.Day
$fullPath = "some directory\$fileName"

Write-Host "[$(Get-Date)] Starting job for file $fullPath"
$latest = Start-Job -Arg $fullPath -ScriptBlock {
param($file)

# wait until the file exists, just in case
while(-not (Test-Path $file)){ sleep -sec 10 }

Get-Content $file -wait | where {$_ -match "some regex"} |
foreach { send_email($_) }
}

# wait until day changes, or whatever would cause new log file to be created
while($now.Date -eq (Get-Date).Date){ sleep -Sec 10 }

# kill the job and start over
Write-Host "[$(Get-Date)] Stopping job for file $fullPath"
$latest | Stop-Job
}

关于powershell - 使用 Get-Content 监视日志文件 - 等到一天结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17411269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com