Exchange Server SE DAG Ortamında Sağlık Kontrolü: HealthChecker.ps1 ile Uçtan Uca

Merhaba

Daha önce yayınladığım Exchange Server SE Sağlık Kontrolü: HealthChecker.ps1 ile Uçtan Uca yazısında, tek sunuculu bir ortamda HealthChecker.ps1 scriptinin nasıl indirileceğini ve çalıştırılacağını anlatmıştım. Bu yazıda ise aynı işlemi Database Availability Group (DAG) yapısında, iki node ve bir File Share Witness (FSW) üzerinde uçtan uca uyguluyoruz.

DAG ortamında sağlık kontrolü, tek sunucudaki adımların iki kez tekrarlanmasından ibaret değildir. İki nedenden dolayı farklıdır:

  • Yapılandırma kayması (configuration drift): İki node zaman içinde birbirinden ayrışır. Bir node’da yapılan bir düzeltme diğerinde unutulur ve fark, ancak failover olduğunda performans sorunu olarak ortaya çıkar. HealthChecker‘ın birleşik HTML raporu bu farkları yan yana gösterir.
  • DAG’ın kendi sağlığı: HealthChecker sunucu bazlı çalışır. Replikasyon durumu, Cluster Quorum, Witness erişilebilirliği ve veritabanı kopya durumu gibi DAG’a özel konuları ayrıca kontrol etmeniz gerekir.

Bu yazının amacı tespit etmek ve anlamak. Raporda çıkan bulguları tek tek açıklıyor, hangisinin ne anlama geldiğini ve neden önemli olduğunu ele alıyoruz. Bulguların kapatılması ve Security Update kurulumu bir sonraki yazının konusu olacak.

Lab Topolojisi

Bu çalışmada kullandığım ortam aşağıdaki gibidir:

Sunucu Rol İşletim Sistemi Not
W25EXCNOD1 Exchange Server SE (Mailbox) Windows Server 2025 DAG üyesi, birinci node
W25EXCNOD2 Exchange Server SE (Mailbox) Windows Server 2025 DAG üyesi, ikinci node
W25WITNESS File Share Witness Windows Server 2025 Exchange kurulu değil, sadece tanık
EXCDAG Database Availability Group IP-less DAG (Windows Server 2025)

DAG adı EXCDAG, witness sunucu W25WITNESS‘tir. Tanık dizini W25WITNESS üzerinde C:\DAGFileShareWitnesses\EXCDAG, bu dizini yayınlayan paylaşımın adı ise EXCDAG.bakicubuk.com‘dur. Dizin adı ile paylaşım adının farklı olması normaldir; yazının sonundaki witness kontrollerinde bu ayrım önem kazanacak.

Domain bakicubuk.com, AD Site Default-First-Site-Name, işletim sistemi her iki node’da Windows Server 2025 Datacenter (OS Build 26100.33296) ve Exchange sürümü Exchange SE RTM, build 15.02.2562.017.

Her node’da iki adapter var: Ethernet0 MAPI (istemci) ağı, Ethernet1 ise replikasyon ağı. Bu ayrım, raporu yorumlarken önemli olacak.

1. Adım: HealthChecker.ps1 Hazırlığı

Scripti her iki node üzerinde de değil, yönetim yapacağınız tek bir Node üzerinde çalıştırmak yeterlidir. HealthChecker uzak sunuculardan da veri toplayabilir. Ben W25EXCNOD1 üzerinden ilerliyorum.

Not: Scriptleri çalıştıracak hesabın Organization Management rol grubunda ve ilgili sunucularda Local Administrator olması gerekir. Exchange Management Shell’i Run as administrator (Yönetici olarak çalıştır) ile açın.

Öncelikle sunucuda bir çalışma klasörü oluşturalım (yoksa):

Windows PowerShell’i Run as administrator (Yönetici olarak çalıştır) ile açıp:

New-Item -Path "C:\Scripts" -ItemType Directory -Force

Scripti doğrudan resmi GitHub sürümünden indirin (her zaman en güncel sürümü çeker):

Invoke-WebRequest -Uri "https://github.com/microsoft/CSS-Exchange/releases/latest/download/HealthChecker.ps1" -OutFile "C:\Scripts\HealthChecker.ps1"

İndirilen dosya internetten geldiği için block işareti taşıyabilir. Çalıştırırken hata almamak adına engeli kaldırın:

Unblock-File -Path "C:\Scripts\HealthChecker.ps1"

Windows, internetten indirilen dosyalara güvenlik amacıyla Mark of the Web (MOTW) adı verilen bir işaret ekler. Bu işaret, dosyanın harici bir kaynaktan geldiğini belirtir ve PowerShell, imzalı olsa bile bu tür dosyaları çalıştırmadan önce ek güvenlik uyarısı verebilir ya da execution policy nedeniyle engelleyebilir. Unblock-File cmdlet’i bu işareti kaldırarak scriptin sorunsuz çalışmasını sağlar. Dosyanın kaynağına güvendiğinizden (bu örnekte Microsoft’un resmi GitHub deposundan indirildiğinden) emin olduğunuz için bu işaretlemeyi güvenle kaldırabilirsiniz.

İmza Doğrulaması

İnternetten indirilen bir scripti Exchange sunucusunda çalıştırmadan önce imzasını mutlaka doğrulayın. Status değeri Valid, imzalayan ise Microsoft Corporation olmalıdır.

Get-AuthenticodeSignature -FilePath "C:\Scripts\HealthChecker.ps1" | Select-Object Status, SignerCertificate | Format-List

İsterseniz oturumunuz için execution policy’yi geçici olarak esnetebilirsiniz (kalıcı değişiklik yapmadan):

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

PowerShell, imzasız veya harici scriptlerin çalıştırılmasını execution policy ile kontrol eder. Varsayılan olarak bir Windows Server’da bu politika Restricted veya RemoteSigned olabilir ve script çalıştırmayı engelleyebilir. Buradaki komutta önemli nokta -Scope Process parametresidir: bu, politikayı yalnızca o an açık olan PowerShell/EMS (Exchange Management Shell) oturumu için değiştirir. Oturumu kapattığınızda ayar otomatik olarak eski haline döner, yani sunucunun genel güvenlik politikasında kalıcı bir değişiklik yapmazsınız. RemoteSigned değeri ise yerel scriptlerin serbestçe, internetten inen scriptlerin ise yalnızca geçerli bir dijital imzaya sahipse çalışmasına izin verir. HealthChecker Microsoft imzalı olduğu için bu ayarla sorunsuz çalışır. Bu yaklaşım, sistem genelinde kalıcı bir politika gevşetmesi yapmadan işi güvenli biçimde halletmenizi sağlar.

2. Adım: DAG Genelinde Sağlık Kontrolü

Tek sunucu yerine DAG’daki tüm Exchange sunucularını tek seferde taramak istiyoruz.

Exchange Management Shell‘i Run as administrator (Yönetici olarak) açın ve çalışma klasörüne geçin:

Her iki node için veri toplama:

cd C:\Scripts
.\HealthChecker.ps1 -Server "W25EXCNOD1"
.\HealthChecker.ps1 -Server "W25EXCNOD2"

Script her sunucu için bir TXT ve bir XML dosyası üretir; iki node’lu bu ortamda C:\Scripts klasöründe toplam dört dosya oluşur.

  • TXT dosyası: PowerShell’deki çıktının aynısıdır; e-postaya eklemek veya arşivlemek için pratiktir.
  • XML dosyası: HTML rapor üretmek için kullanılan veri dosyasıdır. Windows’ta .xml uzantısı Edge ile ilişkilendirildiği için Explorer’ın “Type” sütununda “Microsoft Edge HTML Document” görünebilir; dosya yine de XML’dir.

Alternatif: organizasyondaki tüm sunucuları otomatik tarama

Sunucu sayısı arttıkça tek tek yazmak yerine pipeline kullanmak daha pratiktir:

Exchange Management Shell‘i Run as administrator (Yönetici olarak) açın ve çalışma klasörüne geçin:

cd C:\Scripts
Get-ExchangeServer | Where-Object {$_.AdminDisplayVersion -Match "^Version 15"} | .\HealthChecker.ps1

Çıktılar bu yöntemde de aynıdır; yalnızca dosya adındaki zaman damgası değişir.

Sadece DAG üyelerini taramak isterseniz:

cd C:\Scripts
(Get-DatabaseAvailabilityGroup EXCDAG).Servers | ForEach-Object { .\HealthChecker.ps1 -Server $_.Name }

Çıktılar bu yöntemde de aynıdır; yalnızca dosya adındaki zaman damgası değişir.

Birleşik HTML raporu üretme

DAG’da HealthChecker‘ın asıl faydası burada ortaya çıkıyor. Toplanan XML dosyalarından tek bir karşılaştırmalı rapor üretiliyor ve iki node’un ayarları yan yana geliyor.

cd C:\Scripts
.\HealthChecker.ps1 -BuildHtmlServersReport -HtmlReportFile "EXCDAG-Report.html"
.\EXCDAG-Report.html
Önemli: -BuildHtmlServersReport parametresi yeni veri toplamaz; yalnızca çalışma klasöründe daha önce oluşturulmuş ...-HealthChecker-*.xml dosyalarını okuyup HTML’e dönüştürür. Bu yüzden raporu üretmeden önce sunucu için en az bir kez -Server parametresiyle scripti çalıştırıp XML çıktısı almış olmanız gerekir. Elde XML yoksa rapor boş çıkar veya hata alırsınız.
Çıktı dosyası adı
-HtmlReportFile parametresini vermezseniz script çıktıyı tarih-saat damgalı olarak ExchangeAllServersReport-yyyyMMddHHmmss.html biçiminde otomatik adlandırır. Dosyaya kendi vereceğiniz sade bir isim, özellikle raporları arşivlerken işinizi kolaylaştırır.

Yukarıdaki iki satırı tek seferde yapıştırırsanız önce .\HealthChecker.ps1 -BuildHtmlServersReport -HtmlReportFile "EXCDAG-Report.html komutunu çalışır. Bu satır tamamlandıktan sonra Enter tuşuna basarak .\EXCDAG-Report.html komutunun çalışmasını sağlayabilirsiniz.

XML dosyalarını ayrı bir klasörde topluyorsanız:

cd C:\Scripts
.\HealthChecker.ps1 -BuildHtmlServersReport -XMLDirectoryPath "C:\Scripts\Reports" -HtmlReportFile "EXCDAG-Report.html"

Sık kullanılan parametreler

Parametre İşlevi Ne Zaman Kullanılır
-Server Belirtilen sunucudan veri toplar Tek node taramasında
-BuildHtmlServersReport XML’lerden birleşik HTML rapor üretir Veri toplama sonrası
-HtmlReportFile Rapor dosya adını belirler Rapor üretirken
-XMLDirectoryPath XML’lerin bulunduğu klasör Raporlar ayrı klasördeyse
-VulnerabilityReport Açık raporunu JSON olarak çıkarır Güncelleme planlarken
-AnalyzeDataOnly Mevcut XML’leri yeniden analiz eder Veri toplamadan tekrar bakarken
-MailboxReport Posta kutusu dağılım raporu üretir Kapasite planlamasında
-ScriptUpdateOnly Script sürümünü kontrol eder Çalıştırmadan önce

Açık (vulnerability) raporu

cd C:\Scripts
.\HealthChecker.ps1 -VulnerabilityReport

3. Adım: Raporu Okuma

HealthChecker çıktısı renk kodludur.

Renk Anlamı Aksiyon
Gri Bilgilendirme Aksiyon gerekmez
Yeşil Önerilerle uyumlu Aksiyon gerekmez
Sarı Uyarı Planlı bakımda düzeltin
Kırmızı Kritik En kısa sürede düzeltin

DAG ortamında raporu okurken üç şeye özellikle dikkat edin:

  1. Kırmızı satırların ikisinde de aynı olması. Bir node’da kırmızı, diğerinde yeşil olan bir madde varsa orada yapılandırma kayması var demektir.
  2. Donanım ve bellek farkları. İki node’un RAM, işlemci ve NIC yapılandırması aynı olmalıdır. Aksi halde failover sonrası performans düşer.
  3. Exchange build numaraları. İki node’un build numarası birbirinden farklıysa, güncelleme çalışmasına başlamadan önce bunu not edin.

Build numaralarını hızlıca karşılaştırmak için:

Get-ExchangeServer | Format-List Name,Edition,AdminDisplayVersion
Get-Command Exsetup.exe | ForEach-Object {$_.FileVersionInfo}

4. Adım: EXCDAG Raporunun Çıktısı

Şimdi asıl konuya geliyoruz: raporda ne çıktı ve bunlar ne anlama geliyor.

Servers Overview

Raporun en üstündeki özet tablo, iki node’u yan yana koyuyor:

Alan W25EXCNOD1 W25EXCNOD2
Exchange Version Exchange SE RTM Exchange SE RTM
Build Number 15.02.2562.017 15.02.2562.017
Product Name Windows Server 2025 Datacenter Windows Server 2025 Datacenter
.NET Framework 4.8.1 (uyumlu) 4.8.1 (uyumlu)
Hardware Type VMware VMware
Logical Cores 2 2
Physical Memory 32 GB 32 GB
Vulnerability Detected True True

İlk bakışta görülen şu: iki node birebir aynı. DAG açısından bu iyi haber, yapılandırma kayması yok. Kötü haber ise her iki node’da da güvenlik açığı tespit edilmiş olması.

Kırmızı Bulgular

Raporda dört kırmızı madde var ve dördü de her iki node’da aynı.

# Bulgu Raporun Söylediği Neden Önemli
1 PageFile Otomatik yönetiliyor, boyut 0 MB. Önerilen: 8192 MB (32768 MB’ın %25’i) Bellek baskısı altında Exchange süreçleri beklenmedik şekilde sonlanabilir, store crash dump alınamaz
2 TCPKeepAlive Not Set. Değer yoksa KeepAliveTime varsayılan olarak 2 saat Firewall ve load balancer’lar bağlantıyı önce düşürür, Outlook istemcilerinde kopmalar görülür
3 Disable IPv6 Correctly IPv6 bazı NIC ayarlarında kapalı ama tam kapalı değil. DisabledComponents = 0 Exchange yarı devre dışı IPv6’yı desteklemez; DAG’da cluster iletişimi de IPv6 kullanır
4 Security Vulnerabilities 29 adet CVE listeleniyor Sunucu, kapatılmamış açıklarla çalışıyor

Üçüncü maddeye dikkat etmek gerekiyor, çünkü sık yanlış anlaşılıyor. Registry tarafı aslında doğruDisabledComponents değeri 0, yani IPv6 devre dışı bırakılmamış. Sorun NIC seviyesinde: adapter özelliklerinden IPv6 binding’i (ms_tcpip6) kaldırılmış. Ortaya yarı yapılandırılmış bir durum çıkıyor ve Exchange bunu desteklemiyor. Microsoft’un önerisi IPv6’yı hiç kapatmamaktır.

Sarı Bulgular

# Bulgu Raporun Söylediği Yorum
5 Not on the latest SU Son Security Update kurulu değil Build 15.02.2562.017; güncel sürüm SU9 (15.2.2562.46)
6 Visual C++ 2012 x64 Redistributable eski (11.0.50727) Exchange özellikle 2012 ve 2013 sürümlerini arar, yenileri yerine geçmez
7 Visual C++ 2013 x64 Redistributable eski (12.0.21005) Aynı şekilde güncellenmeli
8 Sleepy NIC Disabled False, her iki adapter için Ağ kartı güç tasarrufu, gecikme ve kopma üretir
9 Certificate status PendingRequest Tamamlanmamış bir sertifika isteği duruyor, hiçbir servise bağlı değil
10 AMSI Request Body Scanning False İstek gövdesi taraması kapalı
11 Edition StandardEvaluation, 178 gün kaldı Süre dolduğunda Exchange servisleri durur
12 Server Pending Reboot Sadece W25EXCNOD2’de True Bekleyen restart, SU kurulumunu bozabilir
13 Physical Memory 32 GB, öneri 128 GB Üretim için geçerli bir öneri, lab için aksiyon gerekmez
14 Known Issue Detected Hybrid ortamda online archiving sorunu Sadece hybrid yapılandırmada geçerli

On birinci madde teknik bir hata gibi durmuyor ama lab’ın ömrünü belirleyen madde bu. Deneme süresi dolduğunda Exchange servisleri durur, bu yüzden bir kenara not etmekte fayda var.

On ikinci madde ise DAG açısından anlamlı: iki node arasındaki tek fark bu. Bekleyen bir restart varken güvenlik güncellemesi kurmak, kurulumun yarıda kalmasına yol açabilir.

Uyumlu Alanlar

Rapor sadece sorunları göstermiyor. Aşağıdaki kalemler yeşil, yani öneriyle uyumlu:

Alan Durum
.NET Framework 4.8.1
Power Plan High performance
TLS 1.0 / 1.1 Disabled
TLS 1.2 / 1.3 Enabled
RSS Enabled True (her iki adapter)
Extended Protection Enabled (Any VDir)
SerializedDataSigning Enabled
Exchange Emergency Mitigation Service Enabled, pattern servisi erişilebilir
SMB1 Yüklü değil, engellenmiş
Auth Certificate Geçerli, sunucuda mevcut

Güvenlik Açıkları

Vulnerability bölümü build 15.02.2562.017 üzerinde açık olan 29 CVE listeliyor:

CVE-2021-1730, CVE-2025-25005, CVE-2025-25006, CVE-2025-25007, CVE-2025-33051,
CVE-2025-53782, CVE-2025-59248, CVE-2025-59249, CVE-2025-64666, CVE-2025-64667,
CVE-2026-21527, CVE-2026-42897, CVE-2026-45500, CVE-2026-45501, CVE-2026-45502,
CVE-2026-45503, CVE-2026-45504, CVE-2026-47631, CVE-2026-55005, CVE-2026-55006,
CVE-2026-55008, CVE-2026-55009, CVE-2026-62910, CVE-2026-62911, CVE-2026-62912,
CVE-2026-62913, CVE-2026-62914, CVE-2026-62915, CVE-2026-65813

Listenin ilk maddesi olan CVE-2021-1730 diğerlerinden ayrışıyor. Bu açık bir Security Update ile değil, Download Domains yapılandırmasıyla kapatılıyor. Raporda Enable Download Domains = False olarak görünüyor. Diğer 28 CVE ise güncel SU kurulumuyla kapanacak.

Raporun Göstermediği Bir Ayrıntı

HealthChecker bunu bir bulgu olarak işaretlemiyor, ancak ağ bölümüne dikkatli bakınca görülüyor: Ethernet1 (192.168.2.x) replikasyon ağı olmasına rağmen her iki node’da da Registered In DNS = True. Üstelik W25EXCNOD2‘de bu arayüzde bir DNS sunucusu da tanımlı.

DAG’da replikasyon NIC’lerinin DNS’e kaydolmaması, gateway ve DNS sunucusu tanımlanmaması önerilir. Aksi halde istemciler MAPI trafiğini replikasyon ağına yönlendirmeye çalışabilir. Raporu okurken, scriptin renklendirmediği satırlara da bakmakta fayda var.

Get-DnsClient | Select-Object InterfaceAlias, RegisterThisConnectionsAddress
Get-DatabaseAvailabilityGroupNetwork -Identity EXCDAG | Format-List Name,Subnets,ReplicationEnabled,MapiAccessEnabled

5. Adım: DAG’a Özel Sağlık Kontrolleri

HealthChecker‘ın kapsamadığı, DAG’a özel kontroller aşağıdadır. Her birinin beklenen değeri tabloda verilmiştir.

Kontrol Komut Beklenen Değer
DAG yapılandırması Get-DatabaseAvailabilityGroup Tüm sunucular OperationalServers listesinde
Replikasyon sağlığı Test-ReplicationHealth Tüm testler Passed
Kopya durumu Get-MailboxDatabaseCopyStatus Healthy / Mounted
Kopya kuyrukları CopyQueueLength / ReplayQueueLength 0
İndeks durumu ContentIndexState Healthy veya NotApplicable
Cluster node durumu Get-ClusterNode Her iki node Up
Quorum yapılandırması Get-ClusterQuorum Node and File Share Majority
Witness durumu Get-ClusterResource State: Online
Not:Exchange Server SE’de arama altyapısı BigFunnel’a taşındığı için Get-MailboxDatabaseCopyStatus çıktısında ContentIndexState değeri NotApplicable görünür. Ayrı bir içerik indeksi (Search Foundation katalogu) kullanılmadığından kontrol edilecek bir durum da kalmamıştır; bu yüzden NotApplicable beklenen sonuçtur, bir arıza değildir. Healthy değerini yalnızca Exchange 2016 ve 2019 ortamlarında görürsünüz.

DAG yapılandırması ve witness durumu

Get-DatabaseAvailabilityGroup EXCDAG -Status | Format-List Name,Servers,WitnessServer,WitnessDirectory,PrimaryActiveManager,OperationalServers

OperationalServers alanında her iki node da görünmelidir. Bir node eksikse, o node cluster’dan düşmüş demektir.

Replikasyon sağlığı

Test-ReplicationHealth -Identity W25EXCNOD1
Test-ReplicationHealth -Identity W25EXCNOD2



Sadece başarısız olanları görmek için:

Test-ReplicationHealth -Identity W25EXCNOD1 | Where-Object {$_.Result.ToString() -ne "Passed"}
Test-ReplicationHealth -Identity W25EXCNOD2 | Where-Object {$_.Result.ToString() -ne "Passed"}
Not: Buradaki .ToString() şarttır. Result alanı düz metin değil bir enum değeri tuttuğu için doğrudan "Passed" ile karşılaştırıldığında filtre hiçbir satırı elemez ve komut, sadece başarısızları göster dense de bütün testleri listeler. Doğru yazımıyla, her şey yolundaysa komut hiçbir çıktı üretmez — boş çıktı burada iyi haberdir.

Veritabanı kopya durumu

Get-MailboxDatabaseCopyStatus * | Format-Table Name,Status,CopyQueueLength,ReplayQueueLength,ContentIndexState -AutoSize


Aktif kopyaların hangi node’da olduğunu görmek için:

Get-MailboxDatabaseCopyStatus * | Where-Object {$_.Status -eq "Mounted"} | Format-Table Name,MailboxServer,ActiveCopy -AutoSize

Bu çıktı, bir sonraki yazıda hangi node’dan başlayacağımızı belirleyecek: güncelleme her zaman pasif node’dan başlar.

Cluster ve Quorum durumu

Get-ClusterNode
Get-ClusterQuorum | Format-List *
Get-ClusterResource

İki node’lu bir DAG’da Quorum modeli Node and File Share Majority olmalı ve witness kaynağı Online görünmelidir.

Not: Get-ClusterQuorum komutunu sade çalıştırdığınızda yalnızca Cluster adını ve Quorum kaynağını gösteren iki sütun döner; Quorum modeli varsayılan görünümde yer almaz. Format-List * ile tüm alanları açtığınızda QuorumType alanını görürsünüz. İki node ve bir File Share Witness’tan oluşan bu yapıda beklenen değer NodeAndFileShareMajority‘dir.

File Share Witness erişilebilirliği

Get-ClusterResource | Where-Object {$_.ResourceType -eq "File Share Witness"} |
    Format-List Name,State,OwnerNode

Not: Witness’ın sağlıklı olup olmadığını Test-Path ile ölçmeyin. File Share Witness paylaşımının erişim izinleri yalnızca cluster ad nesnesine (<DAGAdı>$ bilgisayar hesabı) verilir; bu yüzden yönetici hesabıyla çalıştırılanTest-Path, witness çalışır durumdayken bile False döner. Ayrıca WitnessDirectory değeri diskteki klasörü (C:\DAGFileShareWitnesses\EXCDAG) gösterirken paylaşımın adı EXCDAG.bakicubuk.com‘dur; klasör adından paylaşım yolu türetmek de yanlış sonuç verir. Doğru gösterge cluster kaynağının kendi durumudur: State değeri Online ise witness erişilebilir demektir.

Genel sunucu sağlığı

Get-ServerHealth -Identity W25EXCNOD1 | Where-Object {$_.AlertValue -ne "Healthy"}
Get-ServerHealth -Identity W25EXCNOD2 | Where-Object {$_.AlertValue -ne "Healthy"}

Bu komut, durumu Healthy olmayan tüm monitör tanımlarını listelediği için çıktı ilk bakışta uzun ve ürkütücü görünür. Satırlara bakarken State sütununa dikkat edin: değeri NotApplicable ise o monitör henüz hiç veri toplamamış demektir, yani gerçek bir alarm değildir. Unknown değeri de aynı şekilde ölçüm yok anlamına gelir. Gerçekten müdahale gerektiren durumları görmek için özet rapora bakmak daha doğrudur:



Sağlık Kontrolü Kontrol Listesi

# Kontrol Beklenen Sonuç
1 HealthChecker script sürümü güncel En son sürüm
2 Script imzası doğrulandı Valid / Microsoft Corporation
3 Her iki node için veri toplandı 2 XML + 2 TXT
4 Birleşik HTML rapor üretildi Karşılaştırmalı çıktı
5 Kırmızı bulgular listelendi 4 kalem tespit edildi
6 Sarı bulgular listelendi 10 kalem tespit edildi
7 İki node karşılaştırıldı Tek fark: pending reboot
8 Test-ReplicationHealth temiz Tüm testler Passed
9 Quorum ve witness sağlıklı Online
10 Vulnerability raporu alındı 29 CVE listelendi

Düzenli Sağlık Kontrolü

Sağlık kontrolünü sadece güncelleme öncesinde değil, düzenli aralıklarla da yapmanızı öneririm. Aşağıdaki komutla haftalık çalışan bir zamanlanmış görev oluşturabilirsiniz.

$action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
  -Argument "-NonInteractive -ExecutionPolicy Bypass -File C:\Scripts\HealthChecker.ps1 -Server W25EXCNOD1,W25EXCNOD2" `
  -WorkingDirectory "C:\Scripts"

$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 06:00

Register-ScheduledTask -TaskName "Exchange HealthChecker - EXCDAG" `
  -Action $action -Trigger $trigger -RunLevel Highest -User "SYSTEM"
Not: Zamanlanmış görevin çalışacağı hesabın Organization Management yetkisine sahip olması gerekir. SYSTEM hesabı yerine, bu amaçla oluşturulmuş bir servis hesabı kullanmak daha doğru bir yaklaşımdır.

Sonuç

EXCDAG ortamında yaptığımız sağlık kontrolü, 4 Kırmızı ve 10 Sarı bulgu ortaya çıkardı. İki node’un yapılandırması neredeyse birebir aynı olduğu için yapılandırma kayması yok; tek fark W25EXCNOD2 üzerindeki bekleyen restart.

DAG ortamında HealthChecker.ps1, iki node arasındaki farkları tek bir raporda görmenizi sağlıyor. Ancak scriptin kapsamı sunucu düzeyinde kalıyor; replikasyon sağlığı, Quorum ve Witness durumu gibi DAG’a özel konuları ayrıca kontrol etmeniz gerekiyor. Bir de scriptin renklendirmediği satırlara bakmakta fayda var; replikasyon NIC’inin DNS kaydı buna iyi bir örnek.

Bir sonraki yazıda bu bulguları sırayla kapatacağız: hangi düzeltmenin restart gerektirdiği, hangilerinin organizasyon genelinde bir kez uygulandığı, node’ların hangi sırayla bakıma alınacağı ve son olarak SU9 (KB5121573) kurulumu.


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

Bir yanıt yazın

Başa Dön