gpt4 book ai didi

powershell - 继续从文件中读取,寻找一些关键字

转载 作者:行者123 更新时间:2023-12-05 05:38:55 25 4
gpt4 key购买 nike

我有一个日志文件需要继续监视该文件以查找一些关键字,我创建了一个 PowerShell 脚本并使用了 get-content 命令和 -wait标记但是,get-content 只是读取第一个关键字,如果我删除 -wait 它将正常工作并读取所有关键字,但它会在完成后退出,并且我希望文件继续等待附加行。

请就此提出建议。

这是我的代码:

$date = Get-date -Format "yyyyMMdd"
$MyError = @('error 1', 'error 2', 'error 3')
$file=$date.log"
foreach ($i in $MyError) {
Get-Content "$file" -Wait | Select-String -Pattern $i -SimpleMatch | ForEach-Object {
if ($i -like 'error 1') {
Write-EventLog -source Test -LogName Test -EventId 1001 -EntryType Error -Message " "
}

if ($i -like 'error 2') {
Write-EventLog -source Test -LogName Test -EventId 1002 -EntryType Error -Message " "
}

if ($i -like 'error 3') {
Write-EventLog -source Test -LogName Test -EventId 1003 -EntryType Error -Message " "
}
}
}

最佳答案

您的代码的问题是 -Wait阻塞主线程,无限期等待直到CTRL+C。因此,您的外部 foreach 仅循环一次,因此 $i 始终是 error 1。解决问题的一个简单方法是在 ForEach-Object 中循环,但也使用 switch -Wildcard会简化你的代码:

Get-Content path\to\file.txt -Wait | ForEach-Object {
switch -Wildcard ($_) {
'*error 1*' {
# do something for error 1
}
'*error 2*' {
# do something for error 2
}
'*error 3*' {
# do something for error 3
}
}
}

关于powershell - 继续从文件中读取,寻找一些关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72814540/

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