Создание счетчика, который обновляется каждые 30 секунд для проверки windows статуса услуги - PullRequest
1 голос
/ 18 апреля 2020

Мне нужно обновлять счетчик каждые 30 секунд, чтобы проверить windows обновить статус службы до работающей.

Приведенный ниже фрагмент кода просто обновляет счетчик для проверки windows обновления статуса службы как "работающей". Но как заставить счетчик обновиться после тайм-аута в 30 секунд?

$services = "wuauserv"
$counter = 8
$status = "Running" 
do 
{
    $count = (Get-Service $services | ? {$_.status -eq $status}).count
    $counter--
} until ($count -eq 0 -or $counter -eq 0)

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Вы можете использовать реальный таймер:

$timer = New-Object -Type Timers.Timer
$timer.Interval  = 3000 #3 seconds

$job = Register-ObjectEvent -InputObject $Timer  -EventName Elapsed  -SourceIdentifier TimerEvent  -Action {Write-Host "[$(Get-Date)] Coucou!" } -MaxTriggerCount 5 

# Start the timer
$timer.Start()

# Stop your code
Wait-Job $job -Timeout 16

#Stop the timer
$timer.Stop()


# When You completely finished with this, you have to cleanup by unregistering the event handler and remove the PSJob.
Get-EventSubscriber | Unregister-Event
Get-Job | Remove-Job 

-MaxTriggerCount 5 - это эквивалент вашего $counter.

Wait-Job $ job -Timeout 16, если вы не хочу ничего делать за истекшее время.

Когда вы полностью закончили с этим, вы должны очиститься, отменив регистрацию обработчика событий и удалив PSJob.

Get-EventSubscriber | Unregister-Event
Get-Job | Remove-Job 
0 голосов
/ 18 апреля 2020

Добавьте команду сна в вашу l oop:

Start-Sleep -Seconds 30
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...