PowerShell Script ile Active Directory Health Check

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:

  1. Server
  2. Site
  3. OS Version
  4. OS Build
  5. IPv4 Address
  6. Operation Master Roles
  7. Ping
  8. IPv6 Status
  9. DNS Servers
  10. DNS Forwarders
  11. DNS Resolution
  12. DNS Scavenging
  13. Pending Reboot
  14. Time Offset (seconds)
  15. NTP Source
  16. VMIC Time Provider
  17. LDAP Bind (ms)
  18. LDAPS Bind (ms)
  19. Uptime (hours)
  20. Uptime (friendly)
  21. OS Free Space (%)
  22. OS Free Space (GB)
  23. RAM Total (GB)
  24. RAM Free (GB)
  25. RAM Free (%)
  26. CPU Total Cores
  27. CPU Total CPUs
  28. CPU Free (%)
  29. Disks Info
  30. DNS Service
  31. Domain Role
  32. NetLogon Service
  33. KDC Service
  34. ADWS Service
  35. DCDIAG: Connectivity
  36. DCDIAG: Advertising
  37. DCDIAG: FrsEvent
  38. DCDIAG: DFSREvent
  39. DCDIAG: SysVolCheck
  40. DCDIAG: KccEvent
  41. DCDIAG: FSMO KnowsOfRoleHolders
  42. DCDIAG: MachineAccount
  43. DCDIAG: NCSecDesc
  44. DCDIAC: NetLogons
  45. DCDIAG: ObjectsReplicated
  46. DCDIAG: Replications
  47. DCDIAG: RidManager
  48. DCDIAG: Services
  49. DCDIAG: SystemLog
  50. DCDIAG: VerifyReferences
  51. DCDIAG: CheckSDRefDom
  52. DCDIAG: CrossRefValidation
  53. DCDIAG: LocatorCheck
  54. DCDIAG: Intersite
  55. DCDIAG: FSMO Check
  56. Events Warning (8h)
  57. Events Error (8h)
  58. Events Critical (8h)
  59. KCC events (8h)
  60. Replication Pending
  61. SYSVOL Share
  62. NETLOGON Share
  63. Replication Summary (num errors)
  64. Max Replication Delay (h)
  65. Tombstone Lifetime
  66. AD Recycle Bin
  67. KRBTGT Password Age
  68. NTLMv1 Status
  69. Latest Hotfix
  70. 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:

  1. Bir Domain Controller üzerinde oturum açın.
  2. PowerShell 5.1 veya 7.x’i Run as administrator olarak çalıştırın.
  3. Dizin yolunu C:\scripts olarak 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.

  1. Bir Domain Controller üzerinde oturum açın.
  2. PowerShell 5.1 veya 7.x’i Run as administrator olarak çalıştırın.
  3. Dizin yolunu C:\scripts olarak 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

Get-ADHealth.ps1 PowerShell script, bir HTML report dosyası oluşturacaktır. HTML report dosyası, Get-ADHealth.ps1 PowerShell script ile aynı dizinde oluşturulur. Bu örnekte, bu klasör 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…

 

Bir yanıt yazın

Başa Dön