【问题标题】:PowerShell script to search for text and a number greater than用于搜索文本和大于的数字的 PowerShell 脚本
【发布时间】:2018-05-19 03:42:13
【问题描述】:

我正在寻找创建一个 PowerShell 脚本来搜索输出并查找大于并发送电子邮件的数字。我目前正在使用脚本来搜索文本并发送电子邮件,这很有效。但现在我希望它搜索文本和大于的数字并发送电子邮件。

这是当前脚本:

 $Output = 'D:\test.data\QueuedJobss.txt'
d:
set-location -Path 'D:\program files\veritas\netbackup\bin\admincmd'
.\bpdbjobs -summary -L > $Output

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

        $MailArgs = @{
            'To'          = 'ab2112@test.com'
            'From'        = 'netbackup@test.com'
            'Subject'     = 'Media Server Offline!'
            'Attachments' = $Output
            'Body'        = 'Check NBU'

            'SmtpServer' = 'smtp.test.worldwide.com'
        }
        Send-MailMessage @MailArgs
    }

但现在我想让它搜索以下输出:

ustestnbma01上的工作总结 排队:1 等待重试:0 活跃:5 成功:25876 部分成功:136 失败:327 不完整:0 暂停:0 总计:26345

上面写着Queued: 1。这就是我想要搜索的内容,如果大于 50,请发送电子邮件。另外,这个输出在排队的单词后面放了很多空格,这是个问题吗?如果是这样,我也可以将输出读取为:

主服务器排队请求活动成功 PARTSUCC 失败 INCOMP SUSP ustestnbma01 1 0 4 25952 136 328 0 0

【问题讨论】:

    标签: powershell


    【解决方案1】:

    将 RegEx(捕获组)插入到 Select-String 的模式中。

    $Output = 'D:\test.data\mediastatus.txt'
    set-location -Path 'D:\program files\veritas\volmgr\bin'
    .\vmoprcmd.exe > $Output
    
    $Queued = (Select-String -Pattern "Queued:\s+(\d+)" -Path $Output).Matches.Groups[1].Value
    
    if ($Queued -gt 50 ) {
        ## send email
    }
    
    • -Pattern "Queued\s+(\d+)" 其中\s+ 表示至少一个但尽可能多的空格,(\d+) 定义捕获组[1] 至少包含一个数字 - 但尽可能多。

    【讨论】:

    • matches.groups[1].value 回来了,无法索引到空数组完整命令看起来像 $Queued = (Select-String -Pattern "Queued:\s+(\d+)" -Path $Output).Matches.Groups[1].Value
    • 似乎在输出中找不到搜索模式,我的印象是Queued: 1 还是应该始终存在其他数字?
    • 我将其更改为 $Queued = (Select-String -Path $Output -Pattern '(?&lt;=Queued:\s+)\d+').Matches.Value 但现在我认为 -gt 无法正常工作。请参阅上面的更新代码。我没有在脚本上收到更多错误,但是当它大于一个数字时,它仍然没有像它应该的那样通知我。我知道我的 send-mailmessage 代码是正确的,因为我到处都在使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多