在升級至 Exchange Server 2010 之後,有些 Cmdlet 會在 PowerShell ISE 中失敗 SP3

原始 KB 編號:   2859999

徵狀

請試想下列案例:

  • 將 Exchange Server Service Pack 2 (SP2) 匯總6環境升級為 Exchange Server 2010 SP3。
  • Exchange Server 2010 SP3 管理工具安裝在用戶端電腦上。
  • 您可以在用戶端電腦上使用 PowerShell 的整合式腳本環境 (ISE) 開啟本機 Windows PowerShell 實例。
  • 您新增 Exchange 嵌入式管理單元。例如,您新增下列 Exchange 嵌入式管理單元:
    E2010 的 Add-PSSnapin

在此案例中,一些 Exchange Cmdlet 不再運作。 例如,下列 Cmdlet 將不再運作:

  • Test-WebServicesConnectivity -ClientAccessServer "Servername" -TrustanySSLcertificate
  • Set-CASMailbox

注意

其他 Cmdlet 可能也無法在此案例中運作。

此外,在 PowerShell ISE 中,您會收到下列錯誤訊息:

Add-PSSSnapin Microsoft.Exchange.Management.PowerShell.E2010
PS H:\> Test-WebServicesConnectivity -ClientAccessServer <Clinet Access Server Name>
ARNING: An unexpected error has occurred and a Watson dump is being generated: Operation is not valid due to the current state of the object.
Test-WebServicesConnectivity : Operation is not valid due to the current state of the object.

此外,也會在應用程式記錄檔中記錄下列錯誤:

Time : -
ID : 8
Level : Error
Source : MSExchange CmdletLogs
Machine : -
Message: (PID 12460, Thread 9) Task Test-WebServicesConnectivity throwing unhandled exception: System.InvalidOperationException: Operation is not valid due to the current state of the object.
at Microsoft.Exchange.Data.Storage.ExchangePrincipal.get_ServerFullyQualifiedDomainName()
at Microsoft.Exchange.Monitoring.TestCasConnectivity.ResetAutomatedCredentialsAndVerify(TestCasConnectivityRunInstance instance)
at Microsoft.Exchange.Monitoring.TestCasConnectivity.BuildRunInstanceForSiteMBox(String deviceId)
at Microsoft.Exchange.Monitoring.TestCasConnectivity.BuildRunInstances()
at Microsoft.Exchange.Monitoring.TestCasConnectivity.InternalProcessRecord()
at Microsoft.Exchange.Configuration.Tasks.Task.ProcessRecord().

因應措施

若要解決此問題,請在 ISE 腳本的開頭使用下列 Cmdlet,以開啟與 Exchange 伺服器的遠端會話:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<FQDN of Exchange 2010 server>/PowerShell/ -Authentication Kerberos import-pssession $session add-pssnapin microsoft.exchange* test-webservicesconnectivity -clientaccessserver CASSERVER -trustanysslcertificate

可以執行 Exchange Cmdlet 的案例

  • 在 Exchange 伺服器上的 Exchange 管理命令介面中。
  • 在已安裝管理工具的電腦上,在 Exchange 管理命令介面中。
  • 在 exchange 伺服器上的 PowerShell 中載入 Exchange 嵌入式管理單元之後。
  • 在 exchange 伺服器上 PowerShell ISE 中載入 Exchange 嵌入式管理單元之後。

注意

Exchange Server 2010 不支援在本機 PowerShell 實例中執行 Cmdlet,除非 Exchange Server 2010 TechNet 檔中有明確規定此用法。 如需詳細資訊,請參閱 Exchange 2010 不支援本機的版本。

無法執行 Exchange Cmdlet 的情況

  • 從不執行 Exchange Server 但已安裝 Exchange Server SP3 管理工具的電腦上 PowerShell。
  • 從 PowerShell ISE 的電腦未執行 Exchange Server,但已安裝 Exchange Server SP3 管理工具。