Невозможно запустить сценарий Exchange PowerShell для выполнения запланированных задач
У меня есть сценарий PowerShell, который работает при вводе непосредственно в PowerShell. Программа PowerShell запускается с ярлыком:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'"
Я пробовал около 10 различных способов в планировщике задач Windows, чтобы сначала открыть ярлык выше, а затем запустить сохраненный файл сценария, но он не будет работать. Он висит на "Бег".
Сценарий находится здесь:
Z:\Exchange PowerShell\MailboxesApproachingOverQuota.ps1
Обратите внимание, что содержимое сценария можно скопировать и вставить в ярлык PowerShell, описанный выше, и он работает абсолютно нормально, и выводит по электронной почте вывод, как следует.
Обратите внимание, что экземпляр PowerShell, который я использую, взят из ярлыка, показанного выше, в котором уже есть аргументы - поэтому я и озадачен тем, что поместить в планировщик задач.
Любая помощь, пожалуйста?
Спасибо:)
РЕДАКТИРОВАТЬ Когда я использую следующее непосредственно в CMD:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'; &'Z:\Exchange Powershell\MailboxesApproachingOverQuota.ps1'"
Я получаю: http://tinypic.com/r/n1fkmg/8
Когда я использую следующее:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'; &'Z:\Exchange Powershell\MailboxesApproachingOverQuota.ps1'"
Я получаю: http://tinypic.com/r/5bbac9/8
Запуск этого:
powershell -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -exec bypass -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'"
Прекрасно открывается командная консоль Exchange: http://tinypic.com/r/2dglulf/8
4 ответа
Я предполагаю, что этот сценарий не подписан. Включили ли вы выполнение неподписанных скриптов, используя Set-ExecutionPolicy -ExecutionPolicy Unrestricted
командлет?
Во-первых, позвольте мне рассказать вам, как вы будете запускать скрипт из задачи:
Program/script:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Add arguments (optional):
-PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'; &'Z:\Exchange Powershell\MailboxesApproachingOverQuota.ps1'"
Также обратите внимание, что идентификатору пользователя, который вы используете для запуска сценария, может потребоваться предоставление разрешений на локальном сервере.
обновление: удалено -noexit
Простой скрипт-файл работает через планировщик задач. Когда я использую -Sendmail:$true
параметр, то это работает. я сделал .bat
файл, и запустите этот файл вместо сценария Powershell в планировщике задач. это .bat
файл работает на моем Exchange 2016.
PowerShell.exe -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; . C:\Script\Get-ExchangeEnvironmentReport.ps1 -HTMLReport C:\Script\Get-exchangeReport.html -SendMail:$true -MailFrom:Admin@domain.com -MailTo:user1@domain.com -MailServer:mail.domain.com"
У меня возникла та же проблема, и я нашел самый простой способ - вызвать команду через файл bat. Я мог выполнить всю команду из командной строки, но если бы я попытался использовать запланированное задание, это не сработало бы, что бы я ни делал.
Однострочный пакетный файл исправил это.
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -version 2.0 -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; c:\psscripts\accessrights.ps1"
Я установил расшифровку в моем сценарии PS, чтобы я мог видеть, завершился ли он и какие команды он выполнил. Я также запустил имя пользователя get-mailboxparmission -identity:\calendar, чтобы подтвердить, что изменения были отражены.
ура
Пит