Criando um trabalho PowerShell que executa um comando SQL a cada 5 minutos
-
19-09-2019 - |
Pergunta
Estou criando um script PowerShell que eu estou indo para executar usando Start-Job
. O trabalho deve continuamente executado em segundo plano até que eu diga a ele para parar de usar Stop-Job
. Ele deve executar um comando SQL em um temporizador com a duração e intensidade especificada os resultados para o gasoduto empregos para que eu possa recuperá-los usando Receive-Job
.
Agora o trabalho é executado corretamente, mas eu não tê-lo configurado para continuar a executar após a execução de comandos SQL inicial (eu não tenho o temporizador implementado).
O que é a maneira correta de implementar um temporizador num emprego PowerShell para que o trabalho é executado continuamente?
Solução
Embora talvez não é um temporizador como tal, tenho feito coisas semelhantes usando apenas um loop:
while ($true) {
"Hello"
[System.Threading.Thread]::Sleep(1000)
}
Você pode querer modificar ainda mais o script para dormir uma quantidade calculada de tempo:
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) }
}