Невозможно запустить сценарий 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, чтобы подтвердить, что изменения были отражены.

ура

Пит

Другие вопросы по тегам