Powershell

從批處理文件執行 Exchange Powershell 腳本:命令不起作用。我的語法有什麼問題?

  • May 24, 2018

來自這裡的這個問題:如何為 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>

並且沒有跡象表明該腳本已實際執行。

那麼我在這裡做錯了什麼?我嘗試根據我所做的一些Google搜尋將其更改.為 a ,但這給了我一個關於成為無法辨識的命令的錯誤,所以我認為它更接近正確。&``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文件在我的window 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:Admin@domain.com -MailTo:user1@domain.com -MailServer:mail.domain.com"

引用自:https://serverfault.com/questions/799239