Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Pavel Nagaev

Пользователь


Сообщения: 136
Благодарности: 40

Профиль | Сайт | Отправить PM | Цитировать


$status = 'Stopped'
[array]$srv = 'Spooler', 'MSExchangeHM'

Stop-Service -Name $srv

while (((Get-Service -Name $srv)|Where-Object {$PSItem.Status -ne "Stopped"})){

sleep 5
}

cls
write-host "finish" -ForegroundColor Green

По вашему коду.
1. while ($true) и выход по break, это считается плохой практикой, т.к. цикл может продолжаться вечно, если есть условие выхода из цикла, то надо его в условия и ставить.
2. ($status -eq (Get-Service -Name $srv).Status) вы[b] сравниваете строку с массивом, обычно в левой части условия используется вычисляемое значение, а в правой статическое значение, хотя это больше дело привычки. Поэтому True и не будет.

-------
Видео на русском про PowerShell
Крутые курсы по PowerShell

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:52, 01-07-2021 | #3