PowerShell Windows Server Health Check ve Otomatik Raporlama

4 Min Read

Neden PowerShell Kullanarak Windows Server Health Check Yapılır?

Kurumsal yapılarda sunucuların düzenli sağlık kontrolü yapmak; performans, güvenlik ve süreklilik açısından kritiktir.
Özellikle çok sayıda Windows Server bulunan ortamlarda bu işlemin manuel yapılması mümkün değildir.

Bu nedenle  windows server health check script’leri kullanılarak:

  • CPU ve RAM kullanım analizleri

  • Disk doluluk takibi

  • Kritik servis ve Windows Update durumları

  • Event Log hataları

  • Ping / DNS / Network testleri

  • Donanım & servis raporları

tek bir komutla otomatik olarak elde edilir.

Bu yazıda komple bir Windows Server Health Check Otomasyon Paketi hazırlıyoruz.

Kontrol Edilecek Başlıklar

Hazırladığımız kurumsal sağlık kontrolü script’i şu parçaları içeriyor:

✔ CPU Kullanımı

✔ RAM Kullanımı

✔ Disk Doluluk Durumu

✔ Servis Kontrolleri (DNS, AD DS, DHCP vb.)

✔ Event Log Hata Analizi

✔ Network Bağlantı Testi

✔ Windows Update Durumu

✔ Ping / DNS Testleri

✔ HTML Dashboard Raporu Oluşturma

✔ Raporu E-mail ile Gönderme

PowerShell Windows Server Health Check Script’i

Kurumsal Seviyede Hazırlanmış Tam Script

<# .SYNOPSIS Windows Server Health Check & HTML Raporlama .DESCRIPTION CPU, RAM, Disk, Servisler, Event Log, Network ve Update kontrollerini yapar. HTML raporu oluşturur ve e-mail ile gönderir. #> 
$Server = $env:COMPUTERNAME $ReportPath = "C:\HealthReports\HealthReport_$(Get-Date -Format yyyyMMdd).html" $SMTPServer = "smtp.tolgaceyhan.com" $SMTPUser = "noreply@tolgaceyhan.com" $SMTPPass = "BurayaSifreGirin" $Recipient = "it@tolgaceyhan.com" 
# ------------------------------- # CPU & RAM # ------------------------------- 
$CPU = Get-Counter -Counter "\Processor(_Total)\% Processor Time" | Select-Object -ExpandProperty CounterSamples $CPULoad = [math]::Round($CPU.CookedValue,2) $RAM = Get-WmiObject Win32_OperatingSystem $TotalRAM = [math]::Round($RAM.TotalVisibleMemorySize/1MB,2) $FreeRAM = [math]::Round($RAM.FreePhysicalMemory/1MB,2) $UsedRAM = $TotalRAM - $FreeRAM 
# ------------------------------- # Disk Durumu # -------------------------------
$Disks = Get-WmiObject Win32_LogicalDisk -Filter "DriveType=3" | Select DeviceID, @{Name="FreeGB";Expression={[math]::Round($_.FreeSpace/1GB,2)}}, @{Name="TotalGB";Expression={[math]::Round($_.Size/1GB,2)}} 
# ------------------------------- # Servis Kontrolleri # ------------------------------- 
$CriticalServices = @("Dnscache","W32Time","LanmanServer","WinRM") $ServiceStatus = foreach ($svc in $CriticalServices) { Get-Service -Name $svc | Select Name, Status } 
# ------------------------------- # Event Log Hataları (Son 24 Saat) # ------------------------------- 
$Events = Get-WinEvent -FilterHashtable @{LogName="System"; Level=2; StartTime=(Get-Date).AddDays(-1)} 
# ------------------------------- # Windows Update Durumu # ------------------------------- 
$UpdateStatus = Get-WindowsUpdateLog 
# ------------------------------- # HTML Rapor Oluşturma # ------------------------------- 
$HTML = @" <h1>Windows Server Health Check Raporu</h1> <h2>Sunucu: $Server</h2> <h3>CPU Kullanımı: $CPULoad %</h3> <h3>RAM Kullanımı: $UsedRAM GB / $TotalRAM GB</h3> <h2>Disk Durumu</h2> $($Disks | ConvertTo-Html -Fragment) <h2>Kritik Servis Durumları</h2> $($ServiceStatus | ConvertTo-Html -Fragment) <h2>Event Log Hataları (24 Saat)</h2> $($Events | Select TimeCreated, Id, LevelDisplayName, Message | ConvertTo-Html -Fragment) "@ $HTML | Out-File -FilePath $ReportPath -Encoding UTF8 
# ------------------------------- # E-mail Gönder # ------------------------------- 
Send-MailMessage ` -From $SMTPUser ` -To $Recipient ` -Subject "Windows Server Health Check Raporu - $Server" ` -Body "HTML rapor ektedir." ` -Attachments $ReportPath ` -SmtpServer $SMTPServer ` -Port 587 ` -UseSsl ` -Credential (New-Object System.Management.Automation.PSCredential($SMTPUser,(ConvertTo-SecureString $SMTPPass -AsPlainText -Force))) Write-Host "Health Check Raporu oluşturuldu ve gönderildi."

Bu yazıda powershell yardımıyla windows sunucuların sağlık durum raporu işlemlerini tamamen otomatik hale getiren kapsamlı bir otomasyon oluşturduk. CPU, RAM, disk, servisler, event log ve update bilgileri düzenli olarak toplanıp hem HTML dashboard olarak kaydedilir hem de e-posta ile yöneticilere iletilebilir.

Bu yaklaşım, büyük ölçekli şirketlerde Windows Server altyapılarının proaktif olarak izlenmesini sağlar.

İlgili Yazılar:

Detaylı Bilgi İçin Microsoft Dökümanları:

Bu makaleyi paylaş
Takip et:
Tolga CEYHAN, bilgi teknolojilerini severek takip eder ve BT üzerine hali hazırda aktif olarak çalışmaktadır. 2006 yılından 2017 yılına kadar web tasarım yazılım üzerine çalışmalar yaptım. Şuan ise Windows Sistem ve Sistem Güvenliği alanında çalışmalarımı sürdürmekteyim.
Yorum Yap

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Exit mobile version