我有一个运行命令的脚本,生成输出,分析该输出,如果它找到单词Queued后跟一个大于100的数字,它会给我发一封电子邮件。排队后有很多空格,但我相信我的代码是正确的,以适应那些。目前我只收到一封电子邮件,当号码设置为0. -gt或-ge设置的任何其他号码都没有通知我应该的时间。
脚本 -
$Output = 'D:\alec.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 100)
这是它正在分析的输出 - usclwnbma01上的工作总结
Queued: 130
Waiting-to-Retry: 0
Active: 124
Successful: 26913
Partially Successful: 114
Failed: 186
Incomplete: 0
Suspended: 0
Total: 27337
答案 0 :(得分:0)
$ Queued在我的测试中返回一个集合。所以这应该是正确的方法:
$Queued = (Select-String -Path $Output -Pattern '(?<=Queued:\s+)\d+').Matches.Value
foreach( $entry in $Queued) {
if( [int]$entry -ge 100 ) {
# do something
}
}
答案 1 :(得分:-1)
如此answer
中所述首先,您需要在变量条件中使用它之前将变量值分配给变量。
$strQueued = (Select-String -Path $Output -Pattern '(?<=Queued:\s+)\d+').Matches.Value
$Queued = [int]$strQueued
if ($Queued -ge 100)