Einige Cmdlets schlagen in PowerShell ISE nach einem Upgrade auf Exchange Server 2010 SP3 fehl

Ursprüngliche KB-Nummer: 2859999

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Sie führen ein Upgrade einer Exchange Server Service Pack 2 (SP2) Rollup 6-Umgebung auf Exchange Server 2010 SP3 durch.
  • Die Exchange Server 2010 SP3-Verwaltungstools werden auf einem Clientcomputer installiert.
  • Sie verwenden powerShell Integrated Scripting Environment (ISE), um eine lokale Windows PowerShell instance auf dem Clientcomputer zu öffnen.
  • Sie fügen die Exchange-Snap-Ins hinzu. Beispielsweise fügen Sie das folgende Exchange-Snap-In hinzu:
    Add-PSSnapin Microsoft.exchange.powershell.e2010

In diesem Szenario funktionieren einige Exchange-Cmdlets nicht mehr. Die folgenden Cmdlets funktionieren beispielsweise nicht mehr:

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

Hinweis

Andere Cmdlets funktionieren in diesem Szenario möglicherweise auch nicht.

Darüber hinaus erhalten Sie in PowerShell ISE die folgende Fehlermeldung:

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.

Außerdem wird der folgende Fehler im Anwendungsprotokoll protokolliert:

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().

Problemumgehung

Um dieses Problem zu umgehen, öffnen Sie eine Remotesitzung mit einem Exchange-Server, indem Sie die folgenden Cmdlets am Anfang des ISE-Skripts verwenden:

$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

Szenarien, in denen Exchange-Cmdlets ausgeführt werden können

  • In der Exchange-Verwaltungsshell auf einem Exchange-Server.
  • In der Exchange-Verwaltungsshell auf einem Computer, auf dem Verwaltungstools installiert sind.
  • In PowerShell auf einem Exchange-Server, nachdem die Exchange-Snap-Ins geladen wurden.
  • In PowerShell ISE auf einem Exchange-Server, nachdem die Exchange-Snap-Ins geladen wurden.

Hinweis

Das Ausführen von Cmdlets in einer lokalen PowerShell-instance wird in Exchange Server 2010 nicht unterstützt, es sei denn, diese Verwendung ist explizit in Exchange Server 2010 TechNet-Dokumentation als erforderlich dokumentiert. Weitere Informationen finden Sie unter Lokale Runspaces werden in Exchange 2010 nicht unterstützt.

Szenarien, in denen Exchange-Cmdlets nicht ausgeführt werden können

  • Von PowerShell auf einem Computer, auf dem nicht Exchange Server ausgeführt wird, aber die Exchange Server SP3-Verwaltungstools installiert sind.
  • Von PowerShell ISE auf einem Computer, auf dem nicht Exchange Server ausgeführt wird, aber die Exchange Server SP3-Verwaltungstools installiert sind.