PowerShell -gt оператор сравнения не работает - PullRequest
0 голосов
/ 18 мая 2018

В настоящее время я использую сценарий PowerShell для чтения выходных данных файла, а затем, если число превышает желаемое, отправляет электронное письмо.Сценарий ниже -

$Output = 'D:\alec.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 1) 

Он создает файл, но не отправляет его мне.Я знаю, что мои почтовые скрипты работают, потому что они те же самые, которые я всегда использую.Кажется, ему трудно интерпретировать строку.Я не получаю никаких ошибок в коде.Вывод, с которого он читает, выглядит так -

Summary of jobs on usctest01
Queued:                                6
Waiting-to-Retry:                        0
Active:                           0
Successful:                   25863
Partially Successful:           113
Failed:                         184
Incomplete:                       0
Suspended:                        0
Total:                        26160

1 Ответ

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

если вы извлечете get-member на $Queued, запустив $Queued | gm, вы увидите это: TypeName: System.String

, поэтому $Queued - строка и, следовательно, -gt не работает.однако если вы преобразуете переменную как целое число следующим образом ([int] указывает, что переменная является целым числом), вы можете использовать -gt, как показано в вашем примере:

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

сейчас работает $Queued | gmпокажет вам это: TypeName: System.Int32

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...