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

Oorspronkelijk KB-nummer:   2859999

Symptomen

Neem het volgende scenario:

  • U voert een upgrade van een service pakket van Exchange Server Service Pack 2 (SP2) uit op Exchange Server 2010 SP3.
  • De beheerprogramma's van Exchange Server 2010 SP3 worden geïnstalleerd op een clientcomputer.
  • U gebruikt de geïntegreerde scriptomgeving van PowerShell (ISE) om een lokaal Windows PowerShell-exemplaar te openen op de clientcomputer.
  • U voegt de Exchange-modules toe. U kunt bijvoorbeeld de volgende Exchange-invoegtoepassing toevoegen:
    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

Notitie

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.

Daarnaast wordt in het toepassingslogboek de volgende fout geregistreerd:

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 met 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-beheer shell op een Exchange-Server.
  • In Exchange-beheer shell op een computer waarop Beheerprogramma's zijn geïnstalleerd.
  • In PowerShell op een Exchange-server nadat de Exchange-modules zijn geladen.
  • In PowerShell-ISE op een Exchange-server nadat de Exchange-invoegtoepassingen zijn geladen.

Notitie

Cmdlets uitvoeren in een lokaal PowerShell-exemplaar wordt niet ondersteund in Exchange Server 2010, tenzij dit gebruik expliciet is beschreven volgens de documentatie in Exchange Server 2010 TechNet. Zie voor meer informatie lokale Runspaces worden niet ondersteund in Exchange 2010.

Scenario's waarin geen Exchange-cmdlets kunnen worden uitgevoerd

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