Запланированная задача, выполняющая скрипт Powershell - PullRequest
0 голосов
/ 30 ноября 2018

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

При запуске любого из этих сценариев из Powershell напрямую / вручную,проблем нет - каждый скрипт выполняет свою функцию без каких-либо проблем.

Однако, несмотря на это, при попытке запустить задачу я сталкиваюсь с кирпичной стеной с кодом выхода 0x1.

Я исследовал это и попробовал ряд различных аргументов:

  • Попытался запустить с «Powershell» в качестве программы, с указанием пути к системной папке, в которой хранится PowerShell, или просто как PowerShell,или Powershell.exe.
  • Попытка выполнить вышеприведенное (во всех вариантах) с помощью переключателя -ExecutionPolicy Bypass.
  • Попытка выполнить приведенное выше с помощью -File "C:\Test\V2\Master.Script.ps1" и объединение с переключателем -ExecutionPolicy Bypass.
  • Попытка с помощью переключателя "-NonInteractive".
  • Запуск от имени системы
  • Запуск с наивысшими привилегиями
  • Запуск вне зависимости от того, вошел пользователь в систему или нет
  • Протестировано с использованием учетной записи пользователя домена, которая является локальным администратором (в реальной среде будет иметь доступ только к локальному администратору или системе)

1 Ответ

0 голосов
/ 30 ноября 2018

У меня были проблемы с этим и в прошлом.То, что я нашел, - это использование BAT File для вызова файла ps1.Надеемся, что это поможет с вашим сценарием.

Файл BAT изменит политику выполнения и затем запустит файл ps1.Файлы BAT и ps1 должны иметь одинаковые имена, за исключением расширения файла

REG ADD "HKLM\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" /T REG_SZ /V ExecutionPolicy /D Unrestricted /F

Start PowerShell.exe -Command "& '%~dpn0.ps1'"

. Вот код, который я использовал для создания новой задачи для запуска дополнительного файла ps1.

$Task_Action = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument '-File C:\File.ps1'
$Task_Principal = New-ScheduledTaskPrincipal -UserId SYSTEM -RunLevel Highest
$Task_Settings = New-ScheduledTaskSettingsSet -Hidden
$Task_Trigger = New-ScheduledTaskTrigger -AtStartup

Register-ScheduledTask `
    -TaskName "Your Task Name" `
    -Action $Task_Action `
    -Principal $Task_Principal `
    -Trigger $Task_Trigger `
    -Settings $Task_Settings `
    -Force

В последнем сценарии я установил обратно политику выполнения с помощью Set-ExecutionPolicy Restricted -Scope LocalMachine

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...