Скрипт PowerShell для поиска текста и числа больше - PullRequest
0 голосов
/ 17 мая 2018

Я ищу для создания сценария 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
    }

Но теперь я хочу, чтобы он выполнял поиск последующий вывод:

Summary of jobs on ustestnbma01
Queued:                                1
Waiting-to-Retry:                        0
Active:                           5
Successful:                   25876
Partially Successful:           136
Failed:                         327
Incomplete:                       0
Suspended:                        0
Total:                        26345

, где написано Queued: 1.Это то, что я хочу найти, и если оно больше 50, отправьте письмо.Кроме того, этот вывод ставит много пробелов после слова в очереди, это проблема?Если это так, я также могу иметь вывод, читаемый как:

MASTER SERVER QUEUED REQUEUED ACTIVE SUCCESS PARTSUCC FAILED INCOMP SUSP 
ustestnbma01    1         0      4  25952     136      328      0      0  

1 Ответ

0 голосов
/ 18 мая 2018

Вставьте 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], содержащую хотя бы одну цифру -но как можно больше.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...