从batch file运行Exchange Powershell脚本:命令不起作用。 我的语法有什么问题?

来自这个问题在这里: 如何创buildExchange PowerShell脚本来修改所有共享邮箱的设置?

这是我的Powershell脚本(向右滚动以查看全部):

$Mailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox Foreach ($Mailbox in $Mailboxes) { Set-Mailbox $Mailbox -MessageCopyForSentAsEnabled $True -MessageCopyForSendOnBehalfEnabled $True } 

如果从Exchange命令行pipe理程序窗口启动,它可以正常工作。

但是我想从batch file启动它,所以我find了以下Microsoft页面: https : //technet.microsoft.com/en-us/library/bb123798%28v=exchg.150%29.aspx?f=255&MSPPError = -2147217396#了RunScript

按照指南那里,我创build了这个batch file(向右滚动查看全部):

 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'" 

我添加了一个没有在说明中指定的事情是围绕我想要运行的脚本的完整path的单引号。 没有单引号,我得到关于C:\Program不是一个公认的cmdlet或脚本的错误。

无论如何,当我运行这个batch file时,terminal窗口打开,然后切换到Powershell窗口,脚本的path名被打印到屏幕上,但在[PS]提示符之前打印出来,没有任何东西执行。

这是我的Powershell窗口在执行batch file后的样子:

 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> 

没有迹象表明脚本已经运行。

那么我在这里弄错了什么? 我试图改变. 基于一些谷歌search我做了,但是那给了我一个关于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:[email protected] -MailTo:[email protected] -MailServer:mail.domain.com"