Код выхода в PowerShell - PullRequest
       3

Код выхода в PowerShell

0 голосов
/ 21 марта 2019

У меня есть файл журнала, и в конце моего скрипта мне нужно просмотреть файл журнала.Если он содержит слова «ОШИБКА: или ПРЕДУПРЕЖДЕНИЕ:», мне нужен скрипт, чтобы сгенерировать код выхода 0. Если он не содержит этих слов, мне нужен скрипт, чтобы сгенерировать код выхода 1. В основном, если он находит теслова мне нужно, чтобы это было правдой, а если нет, мне нужно, чтобы это было ложным.Этот журнал будет просматриваться из планировщика ESP, поэтому мне нужен мой сценарий для вывода кода ошибки или успеха в ESP.

Вот что у меня есть:

$Exit = Get-Content 'H:\REPO\ADNEW\AlertLog.txt'
if ($Exit -cmatch "ERROR:") {exit 1}
if ($Exit -cmatch "WARNING:") {exit 1}
ifelse ($Exit -cnotmatch "WARNING:", "ERROR:") {exit 0}

echo $LASTEXITCODE

1 Ответ

0 голосов
/ 21 марта 2019

Когда вы используете Get-Content без переключателя -Raw, вы получаете коллекцию string (есть граничный случай, когда одиночное возвращение - scalar вместо array),Когда вы используете операторы сравнения для коллекции, он действует как фильтр и не возвращает логическое значение.Собрав воедино эти знания, вы можете сделать что-то вроде этого:

$log = Get-Content -Path H:\AlertLog.txt -Raw

if ($log -cmatch '(?m)(ERROR|WARNING):') {
    1
    exit 1
}
0
exit 0

При этом используется опция многострочного сопоставления регулярных выражений и гарантируется, что $log - это отдельная строка, а не коллекция, с помощью переключателя Raw,Кроме того, он выводит код выхода в поток stdout перед выходом из процесса с этим кодом.

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