Merhaba
Domain Controller health durumunu kontrol etmenin mükemmel bir yolu nedir? Belki mevcut bir Domain yapısına yeni bir Additional Domain Controller yada Read Only Domain Controller eklemek istiyorsunuz ve bunu yapmadan önce Active Directory Health durumunu kontrol etmek istiyorsunuz. Active Directory health check işlemini mükemmel bir PowerShell script ile nasıl yapacağımızı göreceğiz.
Active Directory, bir organizasyonun kimlik doğrulama ve yetkilendirme altyapısının kalbidir; kullanıcı oturum açma işlemlerinden group policy dağıtımına, DNS çözümlemesinden replication süreçlerine kadar pek çok kritik servis buna bağlıdır. Bu nedenle Domain Controller’lar üzerinde ortaya çıkan en küçük bir sorun bile tüm organizasyonu etkileyebilir; kullanıcılar oturum açamayabilir, uygulamalar kimlik doğrulaması yapamayabilir veya replication gecikmeleri tutarsızlıklara yol açabilir.
Düzenli olarak yapılan bir Health Check, bu tür sorunları henüz büyümeden tespit etmenizi sağlar. Manuel olarak ve çeşitli PowerShell komutlarını tek tek çalıştırmak yerine, tüm kontrolleri tek bir script ile otomatikleştirmek hem zaman kazandırır hem de insan kaynaklı hataları en aza indirir. Böylece Connectivity, Replication, DNS, FSMO (Flexible Single Master Operations) rolleri, servis durumları ve sistem kaynakları gibi onlarca farklı metriği tek bir kapsamlı raporda görüntüleyebilirsiniz.
Bu makalede, ortamınızdaki tüm Domain Controller’ları tarayan ve okunması kolay bir HTML rapor üreten Get-ADHealth.ps1 script’ini inceleyeceğiz.
Neden Active Directory health kontrolü yapmak istersiniz
Uygulamanız gereken incident, problem veya değişiklikler varsa Domain Controller health durumunu kontrol etmek iyi bir fikirdir:
- Active Directory ile ilgili bir problem var
- Domain Controller’lar arasında problemler var
- Domain Controller üzerinde bir Windows Update öncesinde/sonrasında
- Organizasyonda yeni bir Domain Controller kurulumu öncesinde/sonrasında
- Bir Domain Controller demote işlemi öncesinde/sonrasında
Active Directory health check PowerShell script
Get-ADHealth.ps1 PowerShell script, Active Directory ortamınızın health durumunu kontrol eder ve herhangi bir sorunu tespit edip çözmek için kullanabileceğiniz bir rapor sunar:
- Server
- Site
- OS Version
- OS Build
- IPv4 Address
- Operation Master Roles
- Ping
- IPv6 Status
- DNS Servers
- DNS Forwarders
- DNS Resolution
- DNS Scavenging
- Pending Reboot
- Time Offset (seconds)
- NTP Source
- VMIC Time Provider
- LDAP Bind (ms)
- LDAPS Bind (ms)
- Uptime (hours)
- Uptime (friendly)
- OS Free Space (%)
- OS Free Space (GB)
- RAM Total (GB)
- RAM Free (GB)
- RAM Free (%)
- CPU Total Cores
- CPU Total CPUs
- CPU Free (%)
- Disks Info
- DNS Service
- Domain Role
- NetLogon Service
- KDC Service
- ADWS Service
- DCDIAG: Connectivity
- DCDIAG: Advertising
- DCDIAG: FrsEvent
- DCDIAG: DFSREvent
- DCDIAG: SysVolCheck
- DCDIAG: KccEvent
- DCDIAG: FSMO KnowsOfRoleHolders
- DCDIAG: MachineAccount
- DCDIAG: NCSecDesc
- DCDIAC: NetLogons
- DCDIAG: ObjectsReplicated
- DCDIAG: Replications
- DCDIAG: RidManager
- DCDIAG: Services
- DCDIAG: SystemLog
- DCDIAG: VerifyReferences
- DCDIAG: CheckSDRefDom
- DCDIAG: CrossRefValidation
- DCDIAG: LocatorCheck
- DCDIAG: Intersite
- DCDIAG: FSMO Check
- Events Warning (8h)
- Events Error (8h)
- Events Critical (8h)
- KCC events (8h)
- Replication Pending
- SYSVOL Share
- NETLOGON Share
- Replication Summary (num errors)
- Max Replication Delay (h)
- Tombstone Lifetime
- AD Recycle Bin
- KRBTGT Password Age
- NTLMv1 Status
- Latest Hotfix
- Processing Time (seconds)
Active Directory health check PowerShell script indirme
Get-ADHealth.ps1 PowerShell script’ini indirin ve Domain Controller üzerindeki C:\scripts klasörüne yerleştirin. Eğer bir scripts klasörünüz yoksa, bir tane oluşturun.

Get-ADHealth.ps1 PowerShell script’ini çalıştırırken herhangi bir hata oluşmaması için dosyanın unblock edildiğinden emin olun.
Active Directory health report oluşturma
Bir Active Directory Health report oluşturmak için aşağıdaki adımları izleyin:
- Bir Domain Controller üzerinde oturum açın.
- PowerShell 5.1 veya 7.x’i Run as administrator olarak çalıştırın.
- Dizin yolunu
C:\scriptsolarak değiştirin.
cd "C:\scripts"

Aşağıdaki cmdlet’lerden birini çalıştırın.
Active Directory Health Report Örnekleri
Bu cmdlet, Active Directory Health Check işlemini Forest yapısı içindeki tüm Domain’ler ve Domain Controller’lar üzerinde çalıştırır ve sonuçları C:\scripts klasörü içinde HTML formatında bir rapor oluşturur.
.\Get-ADHealth.ps1 -Report
Bu cmdlet, Active Directory Health Check işlemini “bakicubuk.local” içindeki Domain Controller’lar üzerinde çalıştırır ve sonuçları C:\scripts klasörü içinde HTML formatında bir rapor oluşturur.
.\Get-ADHealth.ps1 -DomainName "bakicubuk.local" -Report
Bu cmdlet, Active Directory Health Check işlemini ortamınızda Computer Name belirlediğiniz tek bir Domain Controller üzerinde çalıştırır ve sonuçları C:\scripts klasörü içinde HTML formatında bir rapor oluşturur.
.\Get-ADHealth.ps1 -Server "W25DC" -Report
Bu cmdlet, Active Directory Health Check işlemini ortamınızda Computer Name belirlediğiniz Primary ve Additional Domain Controller üzerinde çalıştırır ve sonuçları C:\scripts klasörü içinde HTML formatında bir rapor oluşturur.
.\Get-ADHealth.ps1 -Server "W25DC", "W25ADC" -Report
Bu cmdlet, Active Directory Health Check işlemini belirtilen Domain içindeki Computer Name belirlediğiniz Domain Controller üzerinde çalıştırır ve sonuçları C:\scripts klasörü içinde HTML formatında bir rapor oluşturur.
.\Get-ADHealth.ps1 -DomainName "bakicubuk.local" -Server "W25DC" -Report
Bu cmdlet, Active Directory Health Check işlemini çalıştırır ve sonuçlarıC:\scripts klasörü içinde CSV dosyası formatında bir rapor oluşturur.
.\Get-ADHealth.ps1 -CSV
Bu cmdlet, Active Directory Health Check işlemini çalıştırır ve sonuçları C:\scripts klasörü içinde hem HTML formatında hem de CSV dosyası formatında bir rapor oluşturur.
.\Get-ADHealth.ps1 -Report -CSV
Bu cmdlet, Active Directory Health Check işlemini “bakicubuk.local” Domain’i içindeki Domain Controller’lar üzerinde çalıştırır ve raporu e-posta ile gönderir.
.\Get-ADHealth.ps1 -DomainName "bakicubuk.local" -Email
Bu cmdlet, Active Directory Health Check işlemini çalıştırır, hem HTML hem de CSV report’ları kaydeder ve raporu e-posta ile gönderir.
.\Get-ADHealth.ps1 -Report -CSV -Email
Örneğimizde ilk örneği seçersek görünüm bu şekildedir.
- Bir Domain Controller üzerinde oturum açın.
- PowerShell 5.1 veya 7.x’i Run as administrator olarak çalıştırın.
- Dizin yolunu
C:\scriptsolarak değiştirin.
cd "C:\scripts"

Örnek olarak daha önce paylaşmış olduğumuz herhangi bir cmdlet’lerden birini çalıştırın.
Bu cmdlet, Active Directory Health Check işlemini Forest yapısı içindeki tüm Domain’ler ve Domain Controller’lar üzerinde çalıştırır ve sonuçları C:\scripts klasörü içinde HTML formatında bir rapor oluşturur.
.\Get-ADHealth.ps1 -Report



C:\scripts‘tir.
Health report’u açın. W25DC ve W25ADC isimli Domain Controller’ları erişilebilir durumdadır ve neredeyse tüm testler başarıyla geçmiştir.




Başka bir yazımızda görüşmek dileğiyle…