Когда вы используете 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 перед выходом из процесса с этим кодом.