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
解决方案
$Queued 在我的测试中返回一个集合。所以这应该是正确的方法:
$Queued = (Select-String -Path $Output -Pattern '(?<=Queued:\s+)\d+').Matches.Value
foreach( $entry in $Queued) {
if( [int]$entry -ge 100 ) {
# do something
}
}
推荐阅读
- terraform - Terraform AWS 动态提供程序
- xml - 使用带有分组的 XSLT 从 XML 输出文本
- amazon-web-services - Amazon Cloudwatch 代理无法启动
- python - 如何使用 discord.py 在音乐机器人上获得最佳音频质量?
- git - 在 Git 的跟踪区域中隐藏文件
- java - Java jframe api的窗口关闭事件
- c++ - C++ 用不同的类对象制作数组/链表
- macos - Automator 运行 Shell 脚本中的“荒谬长度”错误
- apache - 如果.htacess 中存在,如何重定向到文件?
- c# - C# Selenium - Chrome 浏览器打印模式