Powershell ile Exchange Veritabanı Replikasyon Kontrolü

Powershell ile Exchange Veritabanı Replikasyon Kontrolü

DAG yapısında Exchange veritabanları zaman zaman replikasyon sorunu yaşayabiliyor ve bazen kopya(lar) unhealth / suspended duruma düşebiliyor. Sorunun nedenini araştırıken bir powershell script’i ile bu hataların oluştuğu zaman haberdar olmak isteyebilirsiniz. Aşağıdaki script’i scheduled task olarak ayarlayıp istediğiniz aralıkta çalıştırırsanız sizin yerinize replikasyon hatalarını kontrol edip size hata olunca email yollayabilir:

[ps]
# Exchange management Shell’in yüklü olup olmadığının kontrolü
if (!(Get-Command Get-ExchangeServer -ErrorAction SilentlyContinue))
{
# Not: Eğer Exchange’in install dizini başka bir disk seçildiyse, disk harfi değiştirilmelidir.

if (Test-Path "C:Program FilesMicrosoftExchange ServerV14binRemoteExchange.ps1")
{
. ‘C:Program FilesMicrosoftExchange ServerV14binRemoteExchange.ps1′
Connect-ExchangeServer -auto
} elseif (Test-Path "C:Program FilesMicrosoftExchange ServerbinExchange.ps1") {
Add-PSSnapIn Microsoft.Exchange.Management.PowerShell.Admin
.’C:Program FilesMicrosoftExchange ServerbinExchange.ps1’
} else {
throw "Exchange Management Shell cannot be loaded"
}
}

# hata’nın olup olmadığının kontrölü için değişken
$errorexist = $false
# email’de gönderilecek body için
$body = $null

# Exchange Veritabanlarinin replikasyon kontrolü
Get-MailboxServer | Get-MailboxDatabaseCopyStatus | ForEach {

# eğer status Mounted, Healthy veya ContentIndex statusü Healthy değil ise
If ($_.Status -notmatch "Mounted" -and $_.Status -notmatch "Healthy" -or $_.ContentIndexState -notmatch "Healthy")
{
# if-else girdiğinden şu an bir hata mevcut, true olarak set ediyoruz.
$errorexist = $true
# Gönderilecek mesajı ayarlıyoruz, veritabanı ismi, durumu, ve index’in durumu
# Email html olarak gideceğinden <br> ile bir sonraki satıra geçiyoruz
$body = $body + "$($_.Name) – Status: $($_.Status) – Index: $($_.ContentIndexState) <br>"

}
}

# Eğer hata var ise body oluşturuldu, ve errorexist true oldu.
# Şimdi kontrollü olarak emaili yollayalım:
if ($errorexist) {
send-mailmessage -to "cdolarATcdolar.com" -from "cdolarATcdolar.com" -subject "Exchange Replication Sorunu" `
-body $body -SmtpServer myexchange -BodyAsHtml
}

[/ps]

Bulent Tolu

No comments.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Share
Translate »