Ваша конструкция if-else идеальна, но измените условие if, как показано ниже:
(Get-Process | Select-Object -expand name) -eq "svchost"
Первоначально вы сравнивали объект с "svchost", который оценивается как ложный. С флагом -expandProperty
вы получаете то свойство объекта, которое является строкой и может быть правильно сопоставлено с "svchost".
Обратите внимание, что в приведенном выше примере вы сравниваете массив строк, содержащий имя процесса, с svchost. В случае массивов -eq
имеет значение true, если массив содержит другое выражение, в этом случае «svchost»
Есть и другие "лучшие" способы проверки:
if (Get-Process | ?{ $_.Name -eq "svchost"}) {
Write-Host "seen"
}
else {
Write-Host "not seen"
}