Как вернуть довольно нулевое значение с помощью свойства Count из Get-Process?

Сравните три скрипта ниже:

Пример 1

$a = GPS | Where {$_.ProcessName -Match 'AcroRd32'}
$a
$a.Count

If ($a.Count -Eq 0)
{
    Echo "Adobe Reader is Off"
}
Else
{
    Echo "Adobe Reader is On"
}

# If Adobe Reader is not running, how come 0 (zero) is not returned?
# This is prettier, should I use it?  Or does it slow down performance?



Пример 2

$a = GPS AcroRd32
$a
$a.Count

If ($a.Count -Eq 0)
{
    Echo "Adobe Reader is Off"
}
Else
{
    Echo "Adobe Reader is On"
}

# If Adobe Reader is not running, how come 0 (zero) is not returned?
# This is uglier, but it doesn't have to pipe any output, so does it have any performance gains?



Пример 3

GPS AcroRd32 | Measure | Select -Expand Count

# 0 (zero) is returned, but with an ugly Error



Думаю, часть моей проблемы заключается в том, что я отношусь к PowerShell как к VBS; написание кода таким способом / стилем обычно давало мне целочисленное значение, равное нулю, и не вызывало никаких ошибок (если, конечно, Adobe Reader был выключен). Какой правильный способ PowerShell проверяет, что экземпляр программы не запущен? Вопросы о производительности в комментариях вторичны по сравнению с вопросом «PowerShell Way».

П.С. Честно говоря, сообщение об ошибке, возвращаемое третьим образцом, ничего не сломает, оно просто уродливо, поэтому не выходит за рамки практического использования, поэтому я думаю, настоящая проблема в том, что я просто любитель эстетики = ^ D

5
задан Stisfa 2 October 2011 в 20:41
поделиться