У меня есть пара сценариев Exchange 2010 PowerShell, которые я хотел бы запустить как запланированные задачи.
Если я запускаю PowerShell с помощью «Запуск от имени другого пользователя», я могу запустить сценарии, и они выполняются правильно.
Если я планирую задачу с использованием того же пользователя, она всегда остается в состоянии «Выполнение».
Как я могу выяснить, где задача застревает?
Для справки, вот как я включаю Exchange:
. 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto
И вот способы, которые я пытался запустить скрипт из планировщика задач:
- powershell -команда "& {. 'c: \ windows \ script.ps1'}"
- powershell -file 'c: \ windows \ script.ps1'
- powershell-файл "c: \ windows \ script.ps1"
Все с одинаковым результатом. Grr ...
exchange
exchange-2010
powershell
scheduled-task
длинная шея
источник
источник
Register-ScheduledJob
никогда не «заканчивалось», оно заканчивалось, когда я закрывал консоль PowerShell и ISE.Ответы:
Вам нужно либо изменить политику выполнения, либо указать
-ExecutionPolicy Bypass
параметр командной строки.источник
Не уверен, что именно так вы и делаете, но когда я запускаю сценарии PowerShell через планировщик задач, я использую действие «Запустить программу» и выбираю powershell, а затем добавляю оттуда аргументы. Это может быть то, что вы делаете здесь, но это неясно. Вот скриншот:
В соответствии с политикой выполнения TheCompWiz также может возникнуть проблема.
источник
-command
У меня такая же проблема. В моем случае решение состояло в том, чтобы указать директорию «start in» (мой скрипт считывал содержимое файла, который не мог найти, потому что я не указывал полный путь к файлу).
источник
У меня была та же проблема, и комментарий пользователя «user279399» об использовании команды taskkill оказался очень полезным, просто нужно было его изменить. Вот мое решение в конце синтаксиса аргумента
Эта команда убивает только сеанс powershell, который выполняется под этой учетной записью пользователя. Для выполнения запланированных задач рекомендуется иметь отдельную учетную запись администратора Exchange.
источник
Попробуйте добавить в конец вашего скрипта [taskkill / f / im "powershell.exe"], это убьет все процессы "powershell.exe". Я не знаю, как убить текущий процесс Power-Shell (эквивалент [cmd.exe / c]). Но это сделает свое дело.
источник