Sommige cmdlets mislukken in PowerShell ISE na een upgrade naar Exchange Server 2010 SP3

Origineel KB-nummer: 2859999

Symptomen

Neem het volgende scenario:

  • U upgradet een Exchange Server Service Pack 2 (SP2) Rollup 6-omgeving naar Exchange Server 2010 SP3.
  • De beheerhulpprogramma's van Exchange Server 2010 SP3 zijn geïnstalleerd op een clientcomputer.
  • U gebruikt PowerShell Integrated Scripting Environment (ISE) om een lokaal Windows PowerShell exemplaar op de clientcomputer te openen.
  • U voegt de Exchange-modules toe. U voegt bijvoorbeeld de volgende Exchange-module toe:
    Add-PSSnapin Microsoft.exchange.powershell.e2010

In dit scenario werken sommige Exchange-cmdlets niet meer. De volgende cmdlets werken bijvoorbeeld niet meer:

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

Opmerking

Andere cmdlets werken mogelijk ook niet in dit scenario.

Daarnaast wordt het volgende foutbericht weergegeven in 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.

Ook wordt de volgende fout vastgelegd in het toepassingslogboek:

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

Tijdelijke oplossing

U kunt dit probleem omzeilen door een externe sessie naar een Exchange-server te openen met behulp van de volgende cmdlets aan het begin van het ISE-script:

$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

Scenario's waarin Exchange-cmdlets kunnen worden uitgevoerd

  • In Exchange Management Shell op een Exchange-server.
  • In Exchange Management Shell op een computer waarop Beheerhulpprogramma's is geïnstalleerd.
  • In PowerShell op een Exchange-server nadat de Exchange-modules zijn geladen.
  • In PowerShell ISE op een Exchange-server nadat de Exchange-modules zijn geladen.

Opmerking

Het uitvoeren van cmdlets in een lokaal PowerShell-exemplaar wordt niet ondersteund in Exchange Server 2010, tenzij dit gebruik expliciet wordt gedocumenteerd als vereist in Exchange Server 2010 TechNet-documentatie. Zie Lokale runspaces worden niet ondersteund in Exchange 2010 voor meer informatie.

Scenario's waarin Exchange-cmdlets niet kunnen worden uitgevoerd

  • Vanuit PowerShell op een computer waarop Exchange Server niet wordt uitgevoerd, maar waarop de Exchange Server SP3-beheerprogramma's zijn geïnstalleerd.
  • Vanuit PowerShell ISE op een computer waarop Exchange Server niet wordt uitgevoerd, maar waarop de Exchange Server SP3-beheerprogramma's zijn geïnstalleerd.