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