У меня есть сценарий PowerShell, который запускается вручную с помощью PowerShell ISE. Однако при запуске в качестве запланированной задачи с использованием учетных данных администратора задача не запускается с ожидаемыми результатами.
Сценарий:
$request=new-object System.Net.WebClient
$request.DownloadFile("...url...", "C:\path\to\file.csv")
У пользователя-администратора есть Полный контроль сценария и папки, в которую он пишет. URL-адрес существует и отвечает в разумные сроки (менее одной секунды).
Если я запускаю задачу вручную, статус будет 0x41301 («Выполняется»), пока я не завершу ее. Я поставил задачу обоими способами:
C:\path\to\PS.PS1
C:\windows\system32\WindowsPowerShell\v1.0\powershell.exe
с дополнительными опциями -noninteractive -command "C:\path\to\PS.PS1"
При использовании варианта 1 история задач показывает, что был открыт экземпляр notepad.exe, но никогда не завершает его. Используя вариант 2, он завершает задачу, но не загружает / не создает файл.
я использовал Set-ExecutionPolicy Unrestricted
поскольку это не подписанный сценарий.
Как я могу исправить эту проблему?
Поскольку вы запускаете файл сценария вместо блока сценария, вам следует использовать параметр -File.
Кроме того, установка политики выполнения с помощью командлета Set-ExecutionPolicy не гарантирует, что сценарий выполняется в этом контексте. Действующая политика выполнения может быть перезаписана групповой политикой (GPO). Чтобы принудительно включить это при выполнении файла, используйте параметр -ExecutionPolicy
Команда, которую вы ищете, выглядит следующим образом
powershell.exe -ExecutionPolicy Unrestricted -NonInteractive -NoProfile -File c:\path\ps.ps1
Более подробную информацию об этих параметрах можно найти Вот.
Файл сценария, который вы пытаетесь запустить, не является изначально надежным файлом. Используйте амперсанд перед путем к файлу, чтобы запустить команду:
Powershell.exe -ExecutionPolicy Unrestricted -Command { & 'C:\path\to\PS.PS1' }
Другие параметры запуска PowerShell можно найти в Справка из командной строки PowerShell.exe.
Можете ли вы подтвердить свою политику выполнения для всех областей:
Get-ExecutionPolicy -List
Если вы установите LocalMachine политика к RemoteSigned, у вас должно быть определение задачи, например:
Начинать: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0
Бегать: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe -NoLogo -File c: \ path \ to \ ps.ps1
Хотя вы, возможно, уже нашли решение своей проблемы, я все же собираюсь опубликовать эту заметку, чтобы помочь кому-то другому. Я столкнулся с подобной проблемой. Я в основном использовал другую учетную запись домена для тестирования и сравнения. Задача выполнялась нормально с установленным флажком «Запускать независимо от того, авторизован пользователь или нет».
Следует помнить о нескольких вещах, в которых необходимо убедиться:
Проверьте предоставленную ссылку, и, надеюсь, вы или кто-то другой сможете воспользоваться этой информацией. Быть в безопасности.
https://technet.microsoft.com/en-us/library/cc722152.aspx