При использовании скриптов часто бывает необходимость установки интервала выполнения между одной частью программы и другой. Это можно назвать паузами, но чаще они имеют название содержащие sleep и такая же команда есть в Powershell. Один из примеров использования таких задержек - это поисковики. Когда мы часто выполняем запросы к одному сайту может появится каптча и что бы этого избежать нужно использовать задержку.
Синтаксис командлета следующий:
Start-Sleep -Seconds 5
Кроме длительности задержки в секундах мы можем указывать миллисекунды:
sleep -Milliseconds 5
Sleep - это алиас на основную команду.
Параметров для минут и часов нет, но вы можете выполнять такие операции в качестве выражений:
$timeout = 2
Sleep -Second ($timeout * 60)
Если вы хотите добавить больше логики командлету, например добавив параметр Hours (часы), можете создать функцию типа этой:
function Start-SleepMinutes ($Seconds, $Minutes, $Hours){
if ($Seconds){Start-Sleep -Seconds $Seconds}
elseif ($Minutes){Start-Sleep ($Minutes*60)}
elseif ($Hours){Start-Sleep ($Hours*60*60)}
}
Start-SleepMinutes -Seconds 2
Более подробно о создании функций в Powershell мы писали раннее.
Параметр по умолчанию секунды и он будет первый и он примет значения из конвейера, правда я не знаю кому это может понадобиться:
$timer = @(1,2,3,4)
$timer | sleep
Такую команду можно использовать для подсчета роста использования ресурсов каким-нибудь процессом:
$result = Get-Process -Name chrome | Measure-Object -Sum WS
sleep 10
$result2 = Get-Process -Name chrome | Measure-Object -Sum WS
$result.Sum - $result2.Sum
...
Подписывайтесь на наш Telegram канал
Теги: #powershell