Como o nome sugere, Test-ServiceHealth verifica o estado dos serviços que devem ser executados no servidor Exchange. Uma das melhores coisas sobre este cmdlet é que ele verifica os serviços de acordo com as funções de servidor do Exchange que estão instalados.
Assim, por exemplo, para um servidor com a função de Hub Transport o serviço relacionado com a função de Transporte de Hub será verificado. Enquanto que para um servidor “TIPICO” Exchange 2010 os serviços para o Transporte de Hub, Acesso para Cliente e funções de servidor de caixa de correio serão verificadas.
Aqui está um exemplo dos resultados Test-ServiceHealth.
Como você pode ver que são apresentadas diversas informações úteis. Mas, sempre que possível, eu gostaria de ver apenas o mínimo de informação relevante para os meus servidores. No caso de Test-ServiceHealth o resultado RequiredServicesRunning é o campo que eu estou mais interessado.
Portanto, neste caso eu poderia executar o comando abaixo para ver o a informação que me interessa:
Agora suponha que você queira verificar todos os meus servidores Exchange. Eu poderia fazer isso com o seguinte comando:
Interessante, especialmente a indicação de que um deles foi reprovado no teste para a função de servidor de Caixa de Correio. Mas não pode dizer qual foi o servidor falhou.
Vamos tentar isso em vez disso:
Agora temos uma saída que é um pouco mais útil, e me diz qual servidor falhou no teste.
Mas ainda não é o bastante. Eentão vamos acabar com isto em um roteiro prático que vai fazer o seguinte:
Execute Test-SystemHealth para todos os servidores Exchange da organização
. Diga-me quais os servidores passaram no teste
. Diga-me quais os servidores falharam no teste, e por que
. Aqui está o código de script que irá executar esses passos.
#Get the list of Exchange servers in the organization
$servers = Get-ExchangeServer
#Loop through each serverForEach ($server in $servers)
{
Write-Host -ForegroundColor White "---------- Testing" $server
#Initialize an array object for the Test-ServiceHealth results [array]$servicehealth = @() #Run Test-ServiceHealth
$servicehealth = Test-ServiceHealth $server #Output the results
ForEach($serverrole in $servicehealth)
{
If ($serverrole.RequiredServicesRunning -eq $true) {
Write-Host $serverrole.Role -NoNewline; Write-Host -ForegroundColor Green "Pass" }
Else
{ Write-Host $serverrole.Role -nonewline; Write-Host -ForegroundColor Red "Fail"
[array]$notrunning = @()
$notrunning = $serverrole.ServicesNotRunning
ForEach ($svc in $notrunning)
{
$alertservices += $svc
} Write-Host $serverrole.Role "Services not running:"
ForEach ($al in $alertservices)
{
Write-Host -ForegroundColor Red `t$al
} }
}
}
A saída da execução do script será algo parecido com isso.
Neste artigo foram detalhados todos os passos necessários para realizar testes da organização Exchange através do cmdlet “Test-ServiceHealth”.