{"id":87,"title":"Sunucu Hizmet \u0130zleme, PowerShell ile G\u00fcvenli ve Etkili Betik Olu\u015fturma","content":"Havayolu \u015firketleri gibi kritik sistemlerde \u00e7al\u0131\u015fan ortamlarda, sunucular \u00fczerindeki hizmetlerin s\u00fcrekli olarak izlenmesi hayati \u00f6neme sahiptir. Herhangi bir hizmetin durmas\u0131 veya ba\u011flant\u0131 hatas\u0131, u\u00e7u\u015f planlamas\u0131, rezervasyon sistemi veya g\u00fcvenlik s\u00fcre\u00e7lerini do\u011frudan etkileyebilir. Bu yaz\u0131da, Get-Service cmdlet'i ve try-catch hata i\u015fleme yap\u0131s\u0131 kullan\u0131larak, havayolu \u015firketinin birden fazla Windows sunucusunda belirli bir hizmetin durumunu g\u00fcvenli bir \u015fekilde kontrol eden PowerShell beti\u011fi nas\u0131l yaz\u0131l\u0131r? <h3>Neden Get-Service ve try-catch?<\/h3> Bu senaryo i\u00e7in \u00f6nerilen yakla\u015f\u0131m\u0131n temel gerek\u00e7eleri \u015funlard\u0131r: <h5>A. Get-Service Cmdlet'i: Do\u011fal ve Basit \u00c7\u00f6z\u00fcm<\/h5> <ul> <li>Get-Service, Windows hizmetlerini sorgulamak i\u00e7in do\u011frudan tasarlanm\u0131\u015ft\u0131r.<\/li> <li>Komut sat\u0131r\u0131nda Get-Service -Name \"Spooler\" gibi basit bir komutla hizmetin durumu (Running, Stopped, vb.) al\u0131nabilir.<\/li> <li>Uzak sunucularda \u00e7al\u0131\u015ft\u0131r\u0131labilmesi i\u00e7in Invoke-Command ile birlikte kullan\u0131labilir.<\/li> <\/ul> <h5> B. try-catch: Ba\u011flant\u0131 Hatalar\u0131n\u0131 Yakalama ve Y\u00f6netme<\/h5> Uzak sunuculara ba\u011flant\u0131 s\u0131ras\u0131nda \u015fu hatalar olu\u015fabilir: <ul> <li>Sunucu kapal\u0131 veya eri\u015filemez.<\/li> <li>Hizmet ad\u0131 yanl\u0131\u015f veya mevcut de\u011fil.<\/li> <li>Yetkilendirme sorunlar\u0131 (\u00f6rne\u011fin, eri\u015fim reddedildi).<\/li> <\/ul> try-catch yap\u0131s\u0131, bu t\u00fcr istisnalar\u0131 yakalayarak beti\u011fin \u00e7\u00f6kmesini engeller ve \u00f6zel hata mesajlar\u0131 g\u00f6sterir. \u00d6rne\u011fin, bir sunucuya eri\u015filemedi\u011finde kullan\u0131c\u0131ya \"Sunucuya ula\u015f\u0131lam\u0131yor\" gibi bilgilendirici bir mesaj verilebilir. <h3><strong data-spm-anchor->Uzak Sunucularda Hizmet Durumu Kontrol\u00fc<\/strong><\/h3> <pre  data-enlighter-language=\"powershell\"># \u0130zlenecek sunucular ve hizmet ad\u0131 $servers = \"Server01\", \"Server02\", \"Server03\" $serviceName = \"FlightScheduler\" foreach ($server in $servers) { try { # Uzak sunucuda hizmet durumunu sorgula $service = Invoke-Command -ComputerName $server -ScriptBlock { Get-Service -Name $using:serviceName -ErrorAction Stop } -ErrorAction Stop # Hizmet durumunu kontrol et if ($service.Status -eq \"Running\") { Write-Host \"$server \u00fczerinde $serviceName hizmeti aktif.\" -ForegroundColor Green } else { Write-Host \"$server \u00fczerinde $serviceName hizmeti durmu\u015f!\" -ForegroundColor Red # Alternatif i\u015flem (\u00f6rne\u011fin, uyar\u0131 e-postas\u0131 g\u00f6nderme) Send-MailMessage -To \"admin@airline.com\" -From \"monitor@airline.com\" ` -Subject \"Uyar\u0131: Hizmet Durduruldu - $server\" ` -Body \"$serviceName hizmeti $server \u00fczerinde \u00e7al\u0131\u015fm\u0131yor!\" ` -SmtpServer \"smtp.airline.com\" } } catch { # Ba\u011flant\u0131 veya hata durumlar\u0131n\u0131 yakala Write-Host \"$server \u00fczerinde hizmet kontrol\u00fc ba\u015far\u0131s\u0131z: $($_.Exception.Message)\" -ForegroundColor Yellow # Kritik hatalar\u0131 logla Write-EventLog -LogName \"Application\" -Source \"ServiceMonitor\" ` -EntryType Error -EventID 5001 ` -Message \"Sunucu: $server | Hata: $($_.Exception.Message)\" } }<\/pre> <h4><strong>A. <code >Invoke-Command<\/code> ile Uzak Sunucu Eri\u015fimi<\/strong><\/h4> <ul> <li><code >Invoke-Command<\/code> cmdlet'i, uzak sunucularda komut \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flar.<\/li> <li><code >-ComputerName<\/code> parametresiyle hedef sunucu belirlenir.<\/li> <li><code >using:<\/code> de\u011fi\u015fkeni, yerel de\u011fi\u015fkenleri uzak komut blo\u011funa aktar\u0131r.<\/li> <\/ul> <h4><strong>B. <code >-ErrorAction Stop<\/code> ile \u0130stisna Tetikleme<\/strong><\/h4> <ul> <li><code >Get-Service<\/code>, hizmet bulunamad\u0131\u011f\u0131nda varsay\u0131lan olarak hata vermez (non-terminating error).<\/li> <li><code >-ErrorAction Stop<\/code> ile bu t\u00fcr hatalar istisna olarak tetiklenir ve <code >catch<\/code> blo\u011fu taraf\u0131ndan yakalanabilir.<\/li> <\/ul> <h4><strong>C. <code >Send-MailMessage<\/code> ile Uyar\u0131 Bildirimi<\/strong><\/h4> <ul> <li>Hizmet durdu\u011funda e-posta ile bildirim g\u00f6nderilir.<\/li> <li>Bu, IT ekibine h\u0131zl\u0131 m\u00fcdahale imkan\u0131 sunar.<\/li> <\/ul> <h4><strong>D. <code >Write-EventLog<\/code> ile Hata Kayd\u0131<\/strong><\/h4> <ul> <li>Kritik hatalar Windows Olay G\u00fcnl\u00fc\u011f\u00fcne yaz\u0131l\u0131r.<\/li> <li data-spm-anchor->Bu loglar, ileride analiz i\u00e7in saklanabilir.<\/li> <\/ul> Gereksinimler: <ul> <li data-spm-anchor-><strong>A. G\u00fcvenli Ba\u011flant\u0131lar:<\/strong> <ul data-spm-anchor-> <li><code >Invoke-Command<\/code> i\u00e7in PowerShell Remoting (WinRM) yap\u0131land\u0131rmas\u0131 yap\u0131lmal\u0131d\u0131r.<\/li> <li>G\u00fcvenli protokoller (\u00f6rne\u011fin HTTPS) kullan\u0131n.<\/li> <\/ul> <div ><\/div><\/li> <li><strong>B. S\u0131k\u0131\u015f\u0131k A\u011flar\u0131 Dikkate Al\u0131n:<\/strong> <ul> <li><code >-ThrottleLimit<\/code> parametresiyle ayn\u0131 anda ka\u00e7 sunucuya ba\u011flan\u0131laca\u011f\u0131n\u0131 s\u0131n\u0131rlay\u0131n.<\/li> <\/ul> <div ><\/div><\/li> <li><strong>C. Hata Mesajlar\u0131n\u0131 \u00d6zelle\u015ftirin:<\/strong> <ul> <li>Kullan\u0131c\u0131ya anlaml\u0131 bilgiler verin (\u00f6rne\u011fin, <code >\"Hizmet bulunamad\u0131\"<\/code> yerine <code >\"FlightScheduler hizmeti Server01'de yok\"<\/code>).<\/li> <\/ul> <div ><\/div><\/li> <li><strong>D. D\u00fczenli Test Edin:<\/strong> <ul> <li>Sunucular kapal\u0131 oldu\u011funda beti\u011fin nas\u0131l davranaca\u011f\u0131n\u0131 test edin. <h3 data-spm-anchor-><\/h3> <div > <div > <table > <thead > <tr > <th  scope=\"col\"> <div ><strong>Hata<\/strong><\/div><\/th> <th  scope=\"col\"> <div ><strong>A\u00e7\u0131klama<\/strong><\/div><\/th> <th  scope=\"col\"> <div ><strong>\u00c7\u00f6z\u00fcm<\/strong><\/div><\/th> <\/tr> <\/thead> <tbody> <tr > <td > <div ><code >Access is denied<\/code><\/div><\/td> <td > <div >Yetki eksikli\u011fi<\/div><\/td> <td > <div >Beti\u011fi y\u00f6netici haklar\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131n veya<code >Enter-PSSession<\/code>ile kimlik do\u011frulamas\u0131 yap\u0131n.<\/div><\/td> <\/tr> <tr > <td > <div ><code >The RPC server is unavailable<\/code><\/div><\/td> <td > <div >Sunucuya eri\u015filemiyor<\/div><\/td> <td > <div >A\u011f ba\u011flant\u0131s\u0131n\u0131 kontrol edin veya<code >-ThrottleLimit<\/code>azalt\u0131n.<\/div><\/td> <\/tr> <tr > <td > <div ><code >Service does not exist<\/code><\/div><\/td> <td > <div >Hizmet ad\u0131 yanl\u0131\u015f<\/div><\/td> <td > <div ><code >Get-Service<\/code>komutunu do\u011frulay\u0131n.<\/div><\/td> <\/tr> <\/tbody> <\/table> Bu betik, havayolu \u015firketinin sunucular\u0131ndaki kritik hizmetlerin izlenmesi i\u00e7in g\u00fcvenilir bir \u00e7\u00f6z\u00fcm sunar. Get-Service ve try-catch kombinasyonu, hem basit hem de g\u00fc\u00e7l\u00fcd\u00fcr. \u00d6zellikle ba\u011flant\u0131 hatalar\u0131n\u0131 y\u00f6netebilme ve \u00f6zel uyar\u0131lar tan\u0131mlayabilme \u00f6zellikleri, havayolu sekt\u00f6r\u00fcnde kesintisiz hizmet sunulmas\u0131n\u0131 sa\u011flar.\u00a0Beti\u011fi Zamanlanm\u0131\u015f G\u00f6rev (Task Scheduler) ile otomatikle\u015ftirerek her X dakikada bir \u00e7al\u0131\u015ft\u0131rabilirsiniz. <\/div> <\/div><\/li> <\/ul> <\/li> <\/ul>","excerpt":"Havayolu \u015firketleri gibi kritik sistemlerde \u00e7al\u0131\u015fan ortamlarda, sunucular \u00fczerindeki hizmetlerin s\u00fcrekli olarak izlenmesi hayati \u00f6neme...","created_at":"2025-05-01 11:56:50","updated_at":"2026-09-07 19:18:00","category_id":6,"view_count":635,"reading_time":4,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-05-01 11:56:50","featured_image":"resimyok.jpg","slug":"sunucu-hizmet-izleme-powershell-ile-guvenli-ve-etkili-betik-olusturma","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"}