Код IT
← Каталог

Обработка ошибок и стратегии отладки — Stop-Service с таймаутом

Фрагмент из «Обработка ошибок и стратегии отладки»: Stop-Service с таймаутом.

PowerShell main.ps1
function Stop-ServiceWithTimeout {
    param(
        [string]$Name,
        [int]$TimeoutSec = 120
    )

    Stop-Service -Name $Name -NoWait -ErrorAction Stop

    $sw = [Diagnostics.Stopwatch]::StartNew()
    while ((Get-Service -Name $Name).Status -ne 'Stopped') {
        if ($sw.Elapsed.TotalSeconds -ge $TimeoutSec) {
            throw "Служба $Name не остановилась за $TimeoutSec с."
        }
        Start-Sleep -Seconds 2
    }
}
function Stop-ServiceWithTimeout {
    param(
        [string]$Name,
        [int]$TimeoutSec = 120
    )

    Stop-Service -Name $Name -NoWait -ErrorAction Stop

    $sw = [Diagnostics.Stopwatch]::StartNew()
    while ((Get-Service -Name $Name).Status -ne 'Stopped') {
        if ($sw.Elapsed.TotalSeconds -ge $TimeoutSec) {
            throw "Служба $Name не остановилась за $TimeoutSec с."
        }
        Start-Sleep -Seconds 2
    }
}