Как лучше всего использовать скрипт, который читает выходные данные файла, а затем ищет определенное число и, если это число больше его, отправляет электронное письмо.Строка, которую он читает, имеет много пробелов после нее.У меня есть скрипт ниже, но он не работает.Он говорит, что не может индексировать в нулевой массив $Queued = (Select-String -Pattern "Queued:\s+(\d+)" -Path $Output).Matches.Groups[ <<<< 1].Value
Кажется, он зависает в регулярном выражении и группе совпадений.Нужно ли что-то менять?Почему он жалуется на match.group [1]?Или, может быть, даже использовать другой подход к решению.Я готов изменить сценарий, если это необходимо.Я застрял.
Script -
$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
if ($Queued -gt 0 ) {
$MailArgs = @{
'To' = 'ab2112@test.com'
'From' = 'netbackup@test.com'
'Subject' = 'Over 100 Queued Jobs!'
'Attachments' = $Output
'Body' = 'Check Environment'
'SmtpServer' = 'smtp.us.test.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