我在获取脚本搜索单词和数字时遇到了一致的问题,如果该数字大于定义的数字,则会向我发送警报。我似乎无法找到任何答案,我不得不相信以前已经做过。当我将其查找的值设置为0时,脚本只向我发送电子邮件。为什么只有0可以工作?有一次我使用Queued:\s+(\d+)')
,但我不得不改变它,因为它返回null并且不起作用。以下脚本正在运行,但只有在值设置为0 -
$Output = 'D:\test.data\QueuedJobs.txt'
d:
set-location -Path 'D:\program files\veritas\netbackup\bin\admincmd'
.\bpdbjobs -summary -L > $Output
[int]$Queued = (Select-String -Path $Output -Pattern '(?<=Queued:\s+)\d+').Matches.Value
if ($Queued -ge 10){"Queued is {0}" -f $Queued}
我遇到的问题是它试图阅读的输出有很多空格。这就是它生成的文件 -
Queued: 130
Waiting-to-Retry: 0
Active: 124
Successful: 26913
Partially Successful: 114
Failed: 186
Incomplete: 0
Suspended: 0
Total: 27337
答案 0 :(得分:0)
我不得不使用一些不同的模式。
[int]$Queued = (Select-String -Path .\mat.txt -Pattern 'Queued:\s+(\d+)').Matches.Groups[1].Value
修改强>
可以使用具有正面观察效果的表达方式。
[int]$Queued = (Select-String -Path $Output -Pattern '(?<=Queued:\s+)\d+').Matches.Value