У меня есть сценарий 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
Я предполагаю, что этот сценарий не подписан. Включили ли вы выполнение неподписанных скриптов с помощью 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 username: \ calendar, чтобы подтвердить, что изменения были отражены.
Ура
Пит