Денис был очень близко. Но фактическое решение было немного поменяно местами. Так как powershell не может проверять ЦП в течение определенного периода времени, только при текущем использовании, необходимо было использовать проверку SQL Server.
Итак, мой первый шаг в этой работе - запустить скрипт PowerShell, который проверяет, находится ли текущее системное время между двумя временными ограничениями. Если это так, то скрипт powershell ничего не делает. Задание SQL Server интерпретирует это как успех.
Затем задание переходит к последнему шагу и выполняет запрос на обновление.
Однако, если текущее время выходит за пределы диапазона, я выполняю Start-Time -s 600
команду, чтобы приостановить выполнение сценария powershell на 10 минут (имитируя требование «один раз в 5–10 минут»). Это позволяет агенту SQL-сервера постоянно пытаться выполнить это задание. ,
Через 10 минут сценарий powershell выдает пользовательскую ошибку. Поскольку у меня есть $ErrorActionPreference = "Stop"
в начале сценария, сценарий powershell перестает выполняться после ошибки. Этот шаг очень важен.
Поскольку powershell остановлен и не вернулся, агент SQL Server интерпретирует это как сбой и не будет переходить к шагу, выполняющему запрос на обновление.
PS Вы, ребята, привели меня в правильном направлении. Если бы у меня было достаточно репутации, я бы проголосовал за вас, ребята.
Изменить: добавлен скрипт Powershell
$ErrorActionPreference = "Stop"
$StartTime = Get-Date "12:00 AM"
$EndDate = Get-Date "05:00 AM"
$CurrentDate = Get-Date
$ExecuteJob = $StartTime -lt $CurrentDate -and $EndDate -gt $CurrentDate
if(!$ExecuteJob){
Start-Sleep -s 600
throw "Current Time not within Server downtime"
}