来自这个问题:如何为 Exchange Powershell 创建脚本来修改所有共享邮箱的设置?
这是我的 Powershell 脚本(向右滚动即可查看全部):
$Mailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox
Foreach ($Mailbox in $Mailboxes) {
Set-Mailbox $Mailbox -MessageCopyForSentAsEnabled $True -MessageCopyForSendOnBehalfEnabled $True
}
如果从 Exchange 命令行管理程序窗口启动,它可以自行正常运行。
但我想从批处理文件启动它,因此我找到了以下 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
无法识别的 cmdlet 或脚本的错误。
无论如何,当我运行这个批处理文件时,终端窗口会打开,然后更改为 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
.
答案1
试试这个(添加第二个脚本的 dotsourcing):
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'"
答案2
包含发送邮件参数的 Bat 文件脚本。此 bat 文件适用于我的 Windows Server 2016 和 Exchange Server 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"
答案3
我在 BAT 文件中执行以下操作:
powershell -psconsolefile "C:\Program Files\Microsoft\Exchange Server\V15\Bin\exshell.psc1" -noexit "&获取邮箱|获取邮箱统计信息" 暂停