大于Powershell脚本

时间:2018-05-19 01:39:55

标签: regex powershell

我有一个运行命令的脚本,生成输出,分析该输出,如果它找到单词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

2 个答案:

答案 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)