Algunos cmdlets producen un error en PowerShell ISE después de una actualización a Exchange Server 2010 SP3

Número de KB original: 2859999

Síntomas

Imagine la siguiente situación:

  • Actualice un entorno de paquete acumulativo 6 de Exchange Server Service Pack 2 (SP2) a Exchange Server 2010 SP3.
  • Las herramientas de administración Exchange Server 2010 SP3 se instalan en un equipo cliente.
  • Use El entorno de scripting integrado (ISE) de PowerShell para abrir una instancia de Windows PowerShell local en el equipo cliente.
  • Agregue los complementos de Exchange. Por ejemplo, agregue el siguiente complemento de Exchange:
    Add-PSSnapin Microsoft.exchange.powershell.e2010

En este escenario, algunos cmdlets de Exchange ya no funcionan. Por ejemplo, los siguientes cmdlets ya no funcionan:

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

Nota:

Es posible que otros cmdlets no funcionen en este escenario.

Además, recibirá el siguiente mensaje de error en 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.

Además, se registra el siguiente error en el registro de aplicación:

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

Solución alternativa

Para solucionar este problema, abra una sesión remota en un servidor exchange mediante los siguientes cmdlets al principio del script ISE:

$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

Escenarios en los que se pueden ejecutar cmdlets de Exchange

  • En el Shell de administración de Exchange en un servidor exchange.
  • En el Shell de administración de Exchange en un equipo que tenga instaladas las herramientas de administración.
  • En PowerShell en un servidor exchange después de cargar los complementos de Exchange.
  • En PowerShell ISE en un servidor exchange después de cargar los complementos de Exchange.

Nota:

La ejecución de cmdlets en una instancia local de PowerShell no se admite en Exchange Server 2010, a menos que este uso se documente explícitamente como necesario en Exchange Server documentación de TechNet de 2010. Para obtener más información, vea Los espacios de ejecución locales no se admiten en Exchange 2010.

Escenarios en los que no se pueden ejecutar cmdlets de Exchange

  • Desde PowerShell en un equipo que no ejecuta Exchange Server pero que tiene instaladas las herramientas de administración Exchange Server SP3.
  • Desde PowerShell ISE en un equipo que no ejecuta Exchange Server pero que tiene instaladas las herramientas de administración Exchange Server SP3.