首页 > 解决方案 > 大于 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

标签: regexpowershell

解决方案


$Queued 在我的测试中返回一个集合。所以这应该是正确的方法:

 $Queued = (Select-String -Path $Output -Pattern '(?<=Queued:\s+)\d+').Matches.Value

foreach( $entry in $Queued) {
  if( [int]$entry -ge 100 ) {
    # do something
  }
} 

推荐阅读