Создание задания PowerShell, выполняющего команду SQL каждые 5 минут.
-
19-09-2019 - |
Вопрос
Я создаю сценарий PowerShell, который собираюсь выполнить, используя Start-Job
.Задание должно постоянно выполняться в фоновом режиме, пока я не прикажу ему прекратить использование. Stop-Job
.Он должен выполнить команду SQL по таймеру с указанной продолжительностью и вывести результаты в конвейер заданий, чтобы я мог получить их с помощью Receive-Job
.
Сейчас задание выполняется правильно, но у меня нет настроек для продолжения работы после первоначального выполнения команды SQL (у меня не реализован таймер).
Как правильно реализовать таймер в задании PowerShell, чтобы задание выполнялось непрерывно?
Решение
Хотя, возможно, это не совсем таймер как таковой, я делал подобные вещи, просто используя цикл:
while ($true) {
"Hello"
[System.Threading.Thread]::Sleep(1000)
}
Возможно, вы захотите дополнительно изменить сценарий, чтобы он находился в режиме сна в течение вычисленного периода времени:
while ($true) {
$start = [DateTime]::Now
"Hello"
$end = [DateTime]::Now
#computer difference from initial five minute marker (5*60*1000=300000)
$wait = (5*60*1000) - ($end - $start).TotalSeconds
if ($wait -gt 0) { [System.Threading.Thread]::Sleep($wait) }
}