Запланированное задание, созданное с помощью powershell, для запуска кода powershell, генерирующего значение ошибки: 2147942667 - PullRequest
0 голосов
/ 10 марта 2020

Я хочу запустить следующий код powershell в виде запланированной задачи, также развернутой с помощью powershell.

$postParams = @{hostname=hostname;key="keyhere"}; Invoke-WebRequest -Uri https://url.com/url -Method POST -Body $postParams

Я использую следующий код для создания запланированной задачи Windows, которая должна выполнять код .

$repeat = (New-TimeSpan -Minutes 5)
$action = New-ScheduledTaskAction -Execute 'Powershell.exe' `-Argument '-NoProfile -WindowStyle Hidden -command "& {$postParams = @{hostname=hostname;key="keyhere"}; Invoke-WebRequest -Uri https://url.com/url -Method POST -Body $postParams}"'

$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).Date -RepetitionInterval $repeat

Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "Update IP" -Description "IP update"

Хотя это успешно создает саму задачу, ее выполнение приводит к следующей ошибке в истории задач и не выполняет код

Task Scheduler failed to launch action "Powershell.exe" in instance "{9b40f292-92cc-47dc-9041-d3b2d266d82b}" of task "\Update IP". Additional Data: Error Value: 2147942667.

Обычно при поиске этой ошибки онлайн это проблема с кавычками при указании путей, и я не могу найти больше ничего по этому вопросу.

Я бы хотел избегать запуска этого из своего собственного файла .ps1, если это возможно, и заставить его работать описанным выше способом (из-за способа его развертывания).

Может кто-нибудь помочь, пожалуйста?

1 Ответ

1 голос
/ 10 марта 2020

у вас есть дополнительный обратный тик ("` ") перед параметром -Argument, из-за которого задача не получает аргументы, это должно быть так:

$repeat = (New-TimeSpan -Minutes 5)
$action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument '-NoProfile -WindowStyle Hidden -command "& {$postParams = @{hostname=hostname;key="keyhere"}; Invoke-WebRequest -Uri https://url.com/url -Method POST -Body $postParams}"'

$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).Date -RepetitionInterval $repeat

Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "Update IP" -Description "IP update"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...