Active Directory Healt Check

Microsoft MVP’lerinden Sukhija Vikas’ın yazmış olduğu Powershell Scriptini kullanarak, AD Health Check işlemini anlatacağım. Bu işlemi Task Scheduler ile planlamasını yaparak günlük olarak Active Directory takibinizi yapabiliriz. Scriptte Ping Testi, Netlogon Testi, NTDS Testi, DNS Testi, Replication, Sysvol, Services gibi testleri bulunmaktadır. Ben şuan için sadece çalıştırıp, anlık test edeceğim.

https://github.com/VikasSukhija/Downloads

Link üzerinden zip dosyasını indirin ve ADHealthCheck isim powershell dosyasını domain admin yetkili bir kullanıcıda çalıştırın.

  Bu tür işlemler yapmadan, powershell dosyasının içeriğini okuyun ve çok dikkatli olun.

Script çalıştırmak için gelen seçeneklerden, Yes ile devam ediyorum. Çıktıyı herhangi bir mail adresine göndermeyeceğim için Enter tuşuna basarak devam ediyorum.

Kısa bir süre sonra, bulunduğu dizene html uzantılı bir dosya verecektir. Bir tarayıcı ile açtığınızda sağlık durumlarını görebilirsiniz.

E-Mail  

Şimdi bu sonucu e-mail ile seçenekleri ekleyip, zamanlanmış görev ile kendimize gönderelim. Scripte sağ tıklayın ve düzenleye basarak PowerShell ISE açılmasını sağlayın.  Açılan sayfada, = işaretinden sonra aşağıdaki gibi değişkenleri silin.

Sonraki adımda, scriptin en sonuna aşağıdaki kopyalayın ve ilgili alanları kendi yapınıza göre güncelleyiniz. 

  • $To = Alıcı E-posta adresi
  • $Cc = CC’deki Alıcı CC birine eklemek isterseniz buraya mail adresini girebilirsiniz.
  • $Subject = Mail konusu yazılmalıdır. (Aşağıda Active Directory Health Check olarak belirtilmiştir.)
  • $SMTPServer = SMTP sunucunuz (Aşağıda Gmail sunucu bilgisi yer almaktadır.)
  • $SMTPPort = SMTP Port Numarası  (Aşağıda Gmail sunucusunun port bilgisi yer almaktadır.)
  • $pass Gönderici şifreniz bu mail şifrenizdir.  (Gmail kullanılacak ise uygulama parolası oluşturunuz. Diğer kılavuzlara bakılarak bu işlem gerçekleştirilebilir.)
     
####################################EnD#################################################
########################################################################################
 
# Email parameters

$From = "x@gmail.com"
$To = "x@gmail.com"
#$Cc = ""
$Subject = "Active Directory Health Check"
$Body = Get-Content ".\ADreport.htm"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$pass = ConvertTo-SecureString "Parolayı buraya yazınız" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($From, $pass)

Send-MailMessage -From $From -to $To -Subject $Subject -Body ($Body | Out-String) -BodyAsHtml -SmtpServer $SMTPServer -Port $SMTPPort -UseSsl -Credential $cred 

### Yukarıdaki satırdan Mail için CC aktif ederseniz aşağıdaki komut satırını kullanın.
### Send-MailMessage -From $From -to $To  -Cc $Cc -Subject $Subject -Body ($Body | Out-String) -BodyAsHtml -SmtpServer $SMTPServer -Port $SMTPPort -UseSsl -Credential $cred 		

İşlemin başarılı olduğunu kontrol etmek için, script dosyasını çalıştırın ve maili kontrol edin. Eğer her şey istediğiniz gibiyse, script dosyasını windows üzerinde Task Scheduler ekleyerek bu işlemleri düzenli olarak yaptırabilirsiniz.

Powershell Task Scheduler hakkında daha fazla bilgi almak için diğer kılavuzlara bakınız.

  • Program/Script yazan kısıma Windows PowerShell'in yolunu yazınız. C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • Add arguments: Bu alana ise tırnak içlerine scriptin tam konumunu yazın.  -ExecutionPolicy Bypass -File "C:\script\ad_healt_check.ps1

Mail and Slack

Yukarıda AD Health Check sonucunu HTML çıktısında mail olarak almıştık. Şimdi mail ve slack uygulamasından sadece sorun olduğunda sonuçları text olarak alabilirsiniz. Bunu yapmak için SlackWebhook URL bilgileri gerektiğini unutmayın.

Scripte sağ tıklayın ve düzenleye basarak PowerShell ISE açılmasını sağlayın.  Açılan sayfada, = işaretinden sonra aşağıdaki gibi değişkenleri silin.

İkinci adımda ise TÜM Servislerin altına Add-Content kısmındaki rengi ‘YELLOW ve RED’ olan kısımlara $logdata = 4 adında bir değişken atayın.

Sonraki adımda, scriptin en sonuna aşağıdaki kopyalayın. Slack ve mail ile ilgili alanları kendi yapınıza göre güncelleyiniz. 

####################################EnD#################################################
########################################################################################
 
if($logdata -gt 2){

   # SlackWebhook URL bilgilerini giriniz.

    $uriSlack = "https://hooks.slack.com/services/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"
    $body = ConvertTo-Json @{
        pretext = "AD HealtCheck"
        text = "Active Directory Servislerinde Sorun Var."
        color = "#142954"
    }

    try {
        Invoke-RestMethod -uri $uriSlack -Method Post -body $body -ContentType 'application/json' | Out-Null
    } catch {

        Write-Error (Get-Date) ": Update to Slack went wrong..."

        Invoke-WebRequest -Method Post -Uri $Url -Body $body
    }


    #e-posta kullanıcı bilgilerini giriniz.
    $UserName = "team.onkoloji@gmail.com"
    $Password = "kvyb fbnc fqav capf" # (Gmail kullanılacak ise uygulama parolası oluşturunuz. Diğer kılavuzlara bakılarak bu işlem gerçekleştirilebilir.)
    $SecurePassword = ConvertTo-SecureString -string $password -AsPlainText -Force
    $Cred = New-Object System.Management.Automation.PSCredential -argumentlist $UserName, $SecurePassword

    #e-posta parametre bilgilerini giriniz.
    $EmailParams = @{
        From = "team.onkoloji@gmail.com"
        To = "team.onkoloji@gmail.com"
        Subject = "AD HealtCheck"
        Body = "Active Directory Servislerinde Sorun Var."
        BodyAsHtml = $True
        #Cc= "" #Başka birilerini CC ye eklemek isterseniz buraya yazabilirsiniz.
        SmtpServer = "smtp.gmail.com"
        Port = 587
        UseSsl = $true
        Credential = $Cred
    }

    #Call the Send-MailMessage to Send Email
    Send-MailMessage @EmailParams
}else{
echo "Mail Gönderilmedi";
}

İşlemin başarılı olduğunu kontrol etmek için, script dosyasını çalıştırın. Slack ve maili kontrol edin. Eğer her şey istediğiniz gibiyse, script dosyasını windows üzerinde Task Scheduler ekleyerek bu işlemleri düzenli olarak yaptırabilirsiniz.

Powershell Task Scheduler hakkında daha fazla bilgi almak için diğer kılavuzlara bakınız.

  • Program/Script yazan kısıma Windows PowerShell'in yolunu yazınız. C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • Add arguments: Bu alana ise tırnak içlerine scriptin tam konumunu yazın.  -ExecutionPolicy Bypass -File "C:\script\ad_healt_check.ps1
Blog'a Dön