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

Bulent Tolu

Sr. Systems Engineer at VMware
Bulent is an IT professional with Master's in MIS and 10-years of experience in broad range of Information Technologies. He is exposed to engineering/architecting, implementation/integration, and administration of various high-available IT systems and infrastructure. He has a passion to continually research, test and evaluate new technologies and follow industry best practices to secure and optimize IT systems. Currently, he lives in Istanbul and works as a Sr. Systems Engineer at VMware.
Bulent Tolu

Leave a Reply

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

Post Navigation

Share
Translate »