Я бы посоветовал вам сделать что-то вроде этого:
$count = @(get-process | ?{$_.ProcessName -eq "AcroRd32"}).count
if($count -eq 0){
write-host "Adobe Reader is Off"
} else{
write-host "Adobe Reader is On"
}
То, что сделано выше, заключается в том, что он принудительно возвращает возвращаемые объекты в массив, поэтому, если нет запущенных процессов чтения, вы получитепустой массив и, следовательно, его количество будет равно нулю.И когда у вас есть процессы, они есть в массиве, и вы получаете ненулевой счет, и приведенный выше код будет работать как положено.
Альтернатива на основе Sample2 / Sample3:
$acrobat = gps AcroRd32 -ErrorAction SilentlyContinue
if($acrobat){
write-host "Adobe Reader is On"
} else{
write-host "Adobe Reader is Off"
}
Выше мы подавляем ошибку, если читатель не работает.Затем, если установлен $ acrobat, вы знаете, что читатель работает.
Наблюдения за вашим кодом:
Когда читатель не работает, $ a ничего не назначается и, следовательно, $a.Count -eq 0
будет ложнымКогда читатель работает, $ a присваивается этим объектам процесса, и вы получаете $ a.Count как 1 или более и, следовательно, снова ложь.Таким образом, вы всегда получите, что читатель включен.