PowerShell: Etki Alanı Denetleyicisi çalışmıyorsa beni uyar
Etrafta gereğinden fazla izleme yazılımı var. Çoğu gerçekten yararlı ve mükemmel bir şekilde yapılmış. Elinde böyle bir yazılım bulunmayanlar için yalnızca 2 seçenek vardır: onsuz yapmak veya kendi başına bir komut dosyası oluşturmak. Örneğin Etki Alanı Denetleyicilerinizi kontrol etmek için ICMP Echo'yu kullanarak izleme uygulamak istiyorsanız bu makale tam size göre.
Amaç
Amaç, bir veya daha fazla Etki Alanı Denetleyicisine yapılan ping başarısız olursa yöneticiyi bilgilendirmektir. Bu bildirim e-posta yoluyla, olay günlüğüne giriş yapılarak veya başka herhangi bir şekilde yapılabilir. Bu yazıda yöneticiye E-Posta ile bilgi verilecektir. Daha spesifik olarak bununla:
Senaryo
Aramızdaki hızlılar için senaryonun tamamı başlangıçta. Ayrıntılara daha sonra değineceğiz.
$dcs=(Get-ADDomainController -Filter *).Name
foreach ($item in $dcs) {
Try
{
Test-Connection $item -Count 1 -ErrorAction Stop | Out-Null
}
Catch
{
$Site=(Get-ADDomainController $item).Site
$IP= (Get-ADDomainController $item).IPv4Address
$date=Get-Date -Format F
Send-MailMessage -From Alert@domain.com -To p.gruenauer@domain.com -SmtpServer EX01 -Subject "Site: $Site | $item is down" -Body "$IP could not be reached at $date.`n`nIf you receive this message again in 15 minutes, $item is probably down."
}
}
İlk şey, tüm Etki Alanı Denetleyicisi bilgisayar adlarını almaktır. Daha sonra Try - Catch ifadesi tüm DC'lere herhangi bir çıktı olmadan 1 sayısıyla bir ping işlemi gerçekleştirir. (bu, DC başına bir ping anlamına gelir). Daha sonra potansiyel olarak hatalı tüm DC'ler yakalanır ve Site Adı ve IP Adresi kaydedilir. $date ;-) açıklamasını kendime ayıracağım. Daha sonra yöneticiye arızalı DC hakkında detaylı bilgi e-posta ile bildirilir.
Posta sunucunuzun, komut dosyasını çalıştırdığınız bilgisayardan E-Posta gönderilmesine izin verecek şekilde yapılandırılması gerektiğini unutmayın.
Komut dosyasını çalıştıran bilgisayarda Uzak Sunucu Yönetim Araçları'nın (RSAT) yüklü olduğundan emin olun. Get-ADDomainController komutu için buna ihtiyacınız olacak. İşte yükleme komutu:
Install-WindowsFeature RSAT-ADDS
Her 15 dakikada bir çalışan bir Zamanlanmış Görev oluşturun
Bir sonraki görevimiz, betiği örneğin her 15 dakikada bir çalışan Zamanlanmış Görevde uygulamaktır. Yani her Etki Alanı Denetleyicisi 15 dakikalık bir zaman aralığında kontrol edilecektir.
Windows PowerShell veya PowerShell ISE'yi açın. Zamanlanmış Görevi oluşturmak için aşağıdaki Kodu çalıştırın (Komut dosyasının adını ve konumunu, Zamanlanmış Görevin adını, zaman aralığını ve kullanıcı hesabını değiştirmeniz gerekir):
$Action=New-ScheduledTaskAction -Execute "powershell -Argument -Noprofile -WindowStyle Hidden -ExecutionPolicy Bypass -File C:\Temp\script.ps1"
$Trigger=New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 15)
$Set=New-ScheduledTaskSettingsSet
$Principal=New-ScheduledTaskPrincipal -UserId sid-500\administrator
$Task=New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Set -Principal $Principal
Register-ScheduledTask -TaskName "Test DCs" -InputObject $Task -Force
Taskchd.msc'yi açın ve ayarlarınızı kontrol edin. Bir deneme çalıştırması yapın. Son Çalıştırma Sonucu 0x0 olmalıdır.
Önerilen Prosedür
Test için bilgisayarı kapatmak yerine DC'lerden birinde ICMP Echo'yu devre dışı bırakmanızı öneririm ?
Daha sonra 15 dakika bekleyin veya görevi hemen çalıştırın.
Bir E-Posta almazsanız, betiği değiştirmenizi ve sorunun posta sunucusunda olduğunu hariç tutmak için Send-MailMessage Komutunu değiştirmenizi öneririm.
Hatayı bir dosyada saklamak için Send-Mailmessage'ı örneğin Set-Content ile değiştirebilirsiniz.
Şunun gibi görünebilir:
Set-Content C:\Temp\Log\log1.txt -Value "$item is down"
Mutlu izleme!




