У меня есть функция в powershell, которая остановит службу или запустит службу в зависимости от входного параметра функции. Он находится внутри цикла, который проверяет значение 5, если оно не выполняется в первый раз. Сейчас он установлен таким образом, что он должен заканчиваться, когда статус службы остановлен. Как я могу проверить один и тот же цикл, если статус службы запущен ... Это действительно логичный вопрос о том, можете ли вы иметь диаметрально противоположные конечные условия в цикле while. Но у меня есть некоторый сокращенный код для вас ...Две логически противоположные конечные условия в цикле while
[System.ServiceProcess.ServiceController]$service = Get-Service -Name $ServiceName -ComputerName $Remoteserver
[int]$waitCount = 5
do
{
$waitCount--
switch($service.Status)
{
{ @(
[System.ServiceProcess.ServiceControllerStatus]::ContinuePending,
[System.ServiceProcess.ServiceControllerStatus]::PausePending,
[System.ServiceProcess.ServiceControllerStatus]::StartPending,
[System.ServiceProcess.ServiceControllerStatus]::StopPending) -contains $_ }
{
# A status change is pending. Do nothing.
break;
}
{ @(
[System.ServiceProcess.ServiceControllerStatus]::Paused,
[System.ServiceProcess.ServiceControllerStatus]::Running) -contains $_ }
{
# The service is paused or running. We need to stop it.
if($StopOrStart -eq "stop"){
$service.Stop()
write-host("Stopped.")
break;
}
}
{ @(
[System.ServiceProcess.ServiceControllerStatus]::Stopped) -contains $_ }
{
#if Stop or Start is equal to start then start the service.
if($StopOrStart -eq "start"){
$service.Start()
write-host("Started.")
break;
}
}
}
# Sleep, then refresh the service object.
Sleep -Seconds 1
$service.Refresh()
} while (($service.Status -ne [System.ServiceProcess.ServiceControllerStatus]::Stopped) -and $waitCount -gt 0)
Я пытаюсь придумать способ закончить время цикла, если $ service.Status -ne Started, если $ StopOrStart равно «Пуск»?
Я действительно не хочу писать две функции, которые делают одно и то же, одно для запуска служб, а другое - для остановки, когда я могу иметь тот, который это делает.
Это звучит как лучшая идея. Я пинал варианты, похожие на то, что я сам – SoftwareSavant