Сценарий PowerShell останавливает выполнение, когда компьютер под управлением Windows XP заблокирован

У меня есть следующий скрипт, который выполняет непрерывный пинг и сообщает о сбоях. Он работает нормально, за исключением того, что петля "зависает", когда компьютер заблокирован. Я подтвердил это, запустив сценарий, немедленно заблокировав ПК, подождав 10 минут и увидев, сколько пингов произошло. Это далеко от ожидаемого числа. Что может быть виновником?

Write-Host "Entering monitoring loop..." -Background DarkRed

$ping   = new-object System.Net.NetworkInformation.Ping

$count_up  = 0
$count_dn  = 0
$count_dd  = 0

while ($true) {
    $result = $ping.send("10.1.1.1")

    if ($result.Status -eq "Success") {
        $count_up++
        $count_dd = 0
    }
    else {
        $count_dn++
        $count_dd++

        $this_date = Get-Date

        Write-Host "VPN ping failed at time " $this_date -Background Magenta

        if ($count_dd -gt 3) {
            Write-Host "***VPN is Down***" `a
            send_mail_notification("VPN is Down", "")
        }
    }

    if ($Host.UI.RawUI.KeyAvailable -and ("q" -eq $Host.UI.RawUI.ReadKey("IncludeKeyUp,NoEcho").Character)) {
        Write-Host "Exiting monitoring loop..." -Background DarkRed
        break;
    }

    Start-Sleep -m 250
}

$total = $count_up + $count_dn
$uptime = 100 * $count_up / $total

Write-Host $count_up " out of " $total " pings for a " $uptime "% uptime."

0 ответов

Другие вопросы по тегам