Alguns cmdlets falham no ISE do PowerShell após uma atualização para o Exchange Server 2010 SP3

Número original da BDC: 2859999

Sintomas

Considere o seguinte exemplo:

  • Atualize um ambiente do Exchange Server Service Pack 2 (SP2) Rollup 6 para o Exchange Server 2010 SP3.
  • As ferramentas de gestão do Exchange Server 2010 SP3 estão instaladas num computador cliente.
  • Utilize o Ambiente de Scripting Integrado (ISE) do PowerShell para abrir uma instância de Windows PowerShell local no computador cliente.
  • Adicione os snap-ins do Exchange. Por exemplo, adicione o seguinte snap-in do Exchange:
    Add-PSSnapin Microsoft.exchange.powershell.e2010

Neste cenário, alguns cmdlets do Exchange já não funcionam. Por exemplo, os seguintes cmdlets já não funcionam:

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

Nota

Outros cmdlets também podem não funcionar neste cenário.

Além disso, recebe a seguinte mensagem de erro no ISE do PowerShell:

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.

Além disso, é registado o seguinte erro no Registo de aplicações:

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

Solução

Para resolver este problema, abra uma sessão remota num servidor Exchange com os seguintes cmdlets no início do 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

Cenários em que os cmdlets do Exchange podem ser executados

  • Na Shell de Gestão do Exchange num servidor Exchange.
  • Na Shell de Gestão do Exchange num computador com as Ferramentas de Gestão instaladas.
  • No PowerShell num servidor Exchange após o carregamento dos snap-ins do Exchange.
  • No ISE do PowerShell num servidor Exchange após o carregamento dos snap-ins do Exchange.

Nota

A execução de cmdlets numa instância local do PowerShell não é suportada no Exchange Server 2010, a menos que esta utilização esteja explicitamente documentada como sendo necessária na documentação do TechNet Exchange Server 2010. Para obter mais informações, veja As Áreas de Execução Locais não são suportadas no Exchange 2010.

Cenários em que os cmdlets do Exchange não podem ser executados

  • A partir do PowerShell num computador que não está a executar Exchange Server mas que tem as ferramentas de gestão do Exchange Server SP3 instaladas.
  • A partir do ISE do PowerShell num computador que não está a executar Exchange Server mas que tem as ferramentas de gestão do Exchange Server SP3 instaladas.