Исходя из этого вопроса здесь: Как создать сценарий для Exchange Powershell для изменения настроек всех общих почтовых ящиков?
Вот мой скрипт Powershell (прокрутите вправо, чтобы увидеть все):
$Mailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox
Foreach ($Mailbox in $Mailboxes) {
Set-Mailbox $Mailbox -MessageCopyForSentAsEnabled $True -MessageCopyForSendOnBehalfEnabled $True
}
Он отлично работает сам по себе, если запускается из окна Exchange Management Shell.
Но я хочу запустить его из командного файла, поэтому я нашел следующую страницу Microsoft: https://technet.microsoft.com/en-us/library/bb123798%28v=exchg.150%29.aspx?f=255&MSPPError=-2147217396#RunScript
Следуя приведенному там руководству, я создал этот командный файл (прокрутите вправо, чтобы увидеть все):
PowerShell.exe -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; 'C:\Program Files\Microsoft\Exchange Server\V15\bin\enablesentforshared.ps1'"
Я добавил одну вещь, которая не была указана в инструкциях, - это одинарные кавычки вокруг полного пути к сценарию, который я хочу запустить. Без одинарных кавычек я получал сообщение об ошибке C:\Program
не является распознанным командлетом или сценарием.
В любом случае, когда я запускаю этот командный файл, открывается окно терминала, которое затем изменяется на окно Powershell, и имя пути к сценарию распечатывается на экране, но оно распечатывается ДО [PS]
подсказка, и на самом деле ничего не выполняется.
Вот как выглядит мое окно Powershell после выполнения командного файла:
VERBOSE: Connecting to exchangeserver.domain.com
VERBOSE: Connected to exchangeserver.domain.com
C:\Program Files\Microsoft\Exchange Server\V15\bin\enablesentforshared.ps1
[PS] C:\Users\Admin.domain>
И нет никаких указаний на то, что сценарий действительно запущен.
Так что я здесь не так? Я попытался изменить .
к &
на основе некоторых поисковых запросов, которые я сделал, но тогда это дает мне ошибку о Connect-ExchangeServer
непризнанная команда, поэтому я думаю, что .
ближе к правильному.
Попробуйте так (добавлен доцорсинг второго скрипта):
PowerShell.exe -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; . 'C:\Program Files\Microsoft\Exchange Server\V15\bin\enablesentforshared.ps1'"
Сценарий файла bat, включая параметр отправки почты. Этот файл bat работает на моем оконном сервере 2016 и сервере обмена 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:
powershell -psconsolefile "C: \ Program Files \ Microsoft \ Exchange Server \ V15 \ Bin \ exshell.psc1" -noexit "& Get-Mailbox | Get-MailboxStatistics" пауза