Hoşgeldin Misafir

Windows İşletim Sisteminde PowerShell ile Sistem Yönetimini Otomatikleştirme

Yasar7880

İzmir
1 Mar 2024
841 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Merhaba THS alilesi PowerShell, Windows işletim sistemlerinde sistem yönetimini kolaylaştırmak ve otomatikleştirmek için geliştirilmiş güçlü bir komut satırı aracıdır. Bu makalede THS ailesinde bir çok Windows işletim sistemini kullandığını göz önüde bulundurarak bu mükemmel script yazma aracının faydalarından ve işlerinizi nasıl kolaylaştırabileceğinden bahsetmek istedik.


j4PeCW.png


Geleneksel komut istemcilerinden farklı olarak, PowerShell bir kabuk (shell) ve aynı zamanda tam teşekküllü bir programlama dili olarak çalışır. Sistem yöneticileri ve BT profesyonelleri için rutin işleri otomatikleştirmek, büyük ölçekli yapılandırmaları yönetmek ve sistem performansını izlemek için vazgeçilmez bir araçtır.

Bu makalede PowerShell’in sistem yönetimindeki rolünü, temel ve ileri düzey komutları, otomasyon stratejilerini ve pek çok kişinin bilmediği püf noktalarıyla ele alacağız. İlk önce bilgisayarınızdaki arama çobuğuna powershell yazarak uygula penceresini çağırabilirsiniz.


j4Pkmi.jpg


1. PowerShell’in Temel Kavramları


A. Cmdlet Nedir?


PowerShell’de tüm işlemler cmdlet adı verilen küçük komutlar aracılığıyla yapılır. Cmdlet’ler tek bir iş yapacak şekilde tasarlanmıştır ve genellikle Fiil-Ad formatındadır (örn. Get-Process, Set-Date).


Ne işe yarıyor?
Cmdlet’ler sistem bilgisi çekme, ayar değiştirme veya görev otomasyonu için kullanılır. Örneğin, Get-Process ile çalışan tüm süreçleri listeleyebilirsiniz.



Örnek:
Get-Process

Bu komut bilgisayarınızda çalışan tüm işlemleri listeler.

B. Nesne Tabanlı Yaklaşım

PowerShell, diğer komut satırı araçlarının aksine metin değil, nesne ile çalışır. Cmdlet’ler çıktıyı nesne olarak döndürür ve bu nesneler üzerinde kolayca işlem yapılabilir.
Ne işe yarıyor?
Nesneler sayesinde veri işleme, filtreleme ve başka cmdlet’lerle zincirleme işlemler kolaylaşır.

Örnek:

Get-Process | Where-Object {$_.CPU -gt 100}
Bu komut CPU kullanımı 100’den fazla olan süreçleri filtreler.


C. PowerShell Profilleri

PowerShell profil dosyaları ($PROFILE) sayesinde kullanıcıya özel başlangıç ayarları ve sık kullanılan komutları tanımlayabilirsiniz.
Ne işe yarıyor?
Her oturum açıldığında belirli ayarları veya fonksiyonları otomatik olarak yükleyebilirsiniz.
Püf Noktası:
Profilinize sık kullanılan alias’ları ekleyerek zaman kazanabilirsiniz:

Set-Alias ll Get-ChildItem
Artık ll yazarak dosya ve klasörleri listeleyebilirsiniz.


2. Sistem Yönetimi için Temel PowerShell Komutları

A. Sistem Bilgisi Alma

Sistem bilgisi yönetimi için PowerShell, Get-ComputerInfo, Get-EventLog, Get-Service gibi cmdlet’leri sağlar.
Örnekler ve Kullanımı:

  • CPU ve RAM bilgisi:

Get-ComputerInfo | Select-Object CsName, OsName, OsVersion, CsProcessors, CsTotalPhysicalMemory
  • Yüklü servisleri listeleme:

Get-Service
  • Belirli bir servisi durdurma veya başlatma:

Stop-Service -Name "Spooler"
Start-Service -Name "Spooler"
Ne işe yarıyor?
Sistem durumunu izlemenizi, sorunları tespit etmenizi ve gerekli ayarlamaları yapmanızı sağlar.


B. Disk ve Dosya Yönetimi

PowerShell ile dosya ve klasör yönetimi, disk kullanımını kontrol etme ve temizleme işlemleri otomatik hale getirilebilir.
Örnekler:

  • Disk alanını görüntüleme:

Get-PSDrive -PSProvider FileSystem
  • Büyük dosyaları bulma:

Get-ChildItem -Path C:\ -Recurse | Where-Object {$_.Length -gt 1GB}
Ne işe yarıyor?
Depolama sorunlarını önceden tespit etmek ve gereksiz dosyaları temizlemek için kullanılır.
Püf Noktası:

  • -Recurse parametresi tüm alt klasörlerde arama yapar.
  • Measure-Object ile toplam boyut hesaplanabilir.

C. Kullanıcı ve Grup Yönetimi

Active Directory ortamında kullanıcı ve grup yönetimi, PowerShell ile hızlı ve güvenli bir şekilde yapılabilir.
Örnek:

Get-ADUser -Filter * | Select-Object Name, Enabled, LastLogonDate
Ne işe yarıyor?
Tüm kullanıcıların durumunu hızlıca görebilir, aktif olmayan hesapları tespit edebilirsiniz.
Püf Noktası:

  • New-ADUser ve Set-ADUser cmdlet’leri ile kullanıcı ekleme veya ayar değiştirme işlemleri script ile otomatik yapılabilir.

D. Otomatik Görev Planlama

PowerShell ile görevleri planlamak, tekrar eden işlemleri otomatik hale getirmek mümkündür.
Örnek:

$action = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument '-File C:\Scripts\Backup.ps1'
$trigger = New-ScheduledTaskTrigger -Daily -At 3am
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "DailyBackup"

Ne işe yarıyor?
Belirli zamanlarda yedekleme veya bakım script’lerini otomatik çalıştırabilirsiniz.


E. Log ve Event Yönetimi

Sistem olaylarını izlemek ve analiz etmek PowerShell ile kolaydır.
Örnek:

Get-EventLog -LogName System -Newest 50
Ne işe yarıyor?
Sistem hatalarını ve uyarılarını hızlıca tespit ederek, sorun giderme süresini kısaltır.
Püf Noktası:

  • Where-Object ile sadece kritik olayları filtreleyebilirsiniz.

Get-EventLog -LogName System -Newest 100 | Where-Object {$_.EntryType -eq "Error"}

3. İleri Düzey Otomasyon ve Script Yazımı

A. Script Modülleri Kullanımı

PowerShell modülleri, fonksiyonları ve cmdlet’leri paketler hâlinde sunar. Bu sayede aynı script’i farklı makinelerde tekrar kullanabilirsiniz.
Örnek:

Import-Module ActiveDirectory
Ne işe yarıyor?
AD yönetimi ve diğer modüllerin fonksiyonlarını script içerisinde kullanmanızı sağlar.


B. Otomatik Raporlama

Sistem durumu, kullanıcı etkinlikleri veya disk kullanımı gibi verileri otomatik raporlamak mümkündür. CSV, HTML veya JSON formatında çıktı alabilirsiniz.
Örnek:

Get-Service | Export-Csv -Path "C:\Reports\Services.csv" -NoTypeInformation
Ne işe yarıyor?
BT yöneticileri için otomatik ve düzenli rapor üretir, yönetim kararlarını hızlandırır.


C. Püf Noktalar ve İleri Düzey Öneriler

  • Nesne zincirleme (Pipeline): Cmdlet’leri | ile bağlayarak karmaşık işlemleri tek satırda çözebilirsiniz.
  • Alias kullanımı: Uzun komutları kısaltmak için alias tanımlayın.
  • Scheduled Tasks ile otomasyon: Rutin bakım ve yedekleme işlemlerini planlayın.
  • Error Handling: Try-Catch blokları ile script hatalarını yakalayın ve loglayın.

try {
Stop-Service -Name "NonExistentService"
} catch {
Write-Host "Servis bulunamadı."
}

  • PowerShell Remoting: Birden fazla bilgisayarda aynı script’i çalıştırabilirsiniz.

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-Process}



1. Sistem Bilgisi ve Performans İzleme

A. Get-Process | Sort-Object CPU -Descending | Select-Object -First 5

Ne işe yarıyor?
Bilgisayarınızda en fazla CPU kullanan 5 uygulamayı hızlıca görmenizi sağlar.
Günlük fayda: Hangi uygulamanın bilgisayarı yavaşlattığını hemen tespit edebilirsiniz.

Get-Process | Sort-Object CPU -Descending | Select-Object -First 5


B. Get-EventLog -LogName System -EntryType Error -Newest 10

Ne işe yarıyor?
Sistem hatalarını hızlıca gösterir, en son 10 hatayı listeler.
Günlük fayda: Bilgisayarınızda oluşan kritik hataları kısa sürede görebilir, sorunu tanımlayabilirsiniz.


C. Get-ComputerInfo | Select CsName, OsName, OsVersion, OsArchitecture

Ne işe yarıyor?
Bilgisayarın adı, işletim sistemi, sürümü ve mimarisi hakkında hızlı bilgi verir.
Günlük fayda: Bilgisayarınızın teknik detaylarını anında öğrenebilirsiniz, örn. teknik destek veya yazılım kurulumu için gerekli bilgiler.


2. Dosya ve Disk Yönetimi

A. Get-ChildItem -Path C:\Users\%USERNAME%\Documents -Recurse | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)}

Ne işe yarıyor?
Son 30 gündür değişmemiş tüm dosyaları listeler.
Günlük fayda: Eski ve kullanılmayan dosyaları temizleyip depolama alanı açabilirsiniz.


B. Get-PSDrive -PSProvider FileSystem

Ne işe yarıyor?
Bilgisayarınızdaki sürücüleri ve boş alan durumlarını gösterir.
Günlük fayda: Disk alanı kontrolünü hızlıca yapabilirsiniz.


C. Measure-Object

Ne işe yarıyor?
Belirli bir klasördeki dosyaların toplam boyutunu hesaplar.
Günlük fayda: Hangi klasörün çok yer kapladığını görebilirsiniz.

Get-ChildItem C:\Users\%USERNAME%\Documents -Recurse | Measure-Object -Property Length -Sum


3. Ağ ve İnternet İşlemleri

A. Test-Connection google.com

Ne işe yarıyor?
Bilgisayarınızın internete veya belirli bir siteye bağlanıp bağlanamadığını test eder.
Günlük fayda: İnternet sorunlarını hızlıca kontrol edebilirsiniz.


B. Get-NetIPConfiguration

Ne işe yarıyor?
Bilgisayarınızın IP adresi, ağ geçidi ve DNS bilgilerini gösterir.
Günlük fayda: Ağ sorunlarını tanımlamak veya IP bilgisi almak için kullanışlıdır.


C. Resolve-DnsName google.com

Ne işe yarıyor?
Bir web sitesinin IP adresini hızlıca öğrenirsiniz.
Günlük fayda: DNS sorunlarını tespit etmenizi sağlar.


4. Windows Ayarları ve Kısa Yollar

A. Get-StartApps

Ne işe yarıyor?
Başlat menüsündeki tüm uygulamaları listeler.
Günlük fayda: Kurulu uygulamaları hızlıca görebilir, özellikle hangi uygulamanın kurulu olduğunu unutmuşsanız faydalıdır.


B. Get-History

Ne işe yarıyor?
PowerShell’de daha önce çalıştırdığınız komutları listeler.
Günlük fayda: Sık kullanılan komutları tekrar hatırlayıp hızla çalıştırabilirsiniz.


C. Clear-RecycleBin

Ne işe yarıyor?
Geri dönüşüm kutusunu temizler.
Günlük fayda: Tek bir komutla tüm silinen dosyaları kalıcı olarak kaldırabilirsiniz.

Clear-RecycleBin -Force


5. Otomasyon ve Hızlı Script Örnekleri

A. Klasör Yedekleme


Copy-Item -Path C:\Users\%USERNAME%\Documents -Destination D:\Backup -Recurse

Ne işe yarıyor?
Belgelerinizi hızlıca yedekler.
Günlük fayda: Manuel kopyalama ile uğraşmadan yedekleme yapılır.


B. Otomatik Güncellemeleri Kontrol Etme


Get-WindowsUpdateLog

Ne işe yarıyor?
Windows güncellemeleriyle ilgili logları görüntüler.
Günlük fayda: Güncelleme hatalarını ve geçmişini hızlıca görebilirsiniz.


C. Hızlı Not Alma


Add-Content -Path C:\Users\%USERNAME%\Documents\Notes.txt -Value "Bugün yapılacaklar listesi"
Ne işe yarıyor?
Hızlıca metin dosyasına not ekler.
Günlük fayda: Not defteri açmadan kısa komutla günlük not tutabilirsiniz.



4. Sonuç

PowerShell, Windows sistem yönetiminde yalnızca bir komut satırı aracı değil, aynı zamanda güçlü bir otomasyon ve script yazım platformudur. Sistem yöneticileri, PowerShell’i etkili kullanarak:
  • Sistem durumunu hızlı analiz edebilir,
  • Rutin bakım ve yedeklemeleri otomatikleştirebilir,
  • Kullanıcı ve grup yönetimini kolaylaştırabilir,
  • Gelişmiş raporlama ve sorun çözme süreçlerini hızlandırabilir.
Bu makale, THS ailemizin biraz karmaşık görünen PowerShell’in temel ve ileri düzey yeteneklerini anlamaları ve günlük hayatlarına entegre edebilmeleri için bilimsel ve uygulamalı bir şekilde ele almıştır. Her komut ve strateji, sistem yönetimi ve otomasyon amaçlı olarak pratik örneklerle desteklenmiştir. Umarız bilgi dağarcığınıza katkıda bulunabilmişizdir. Siz de konu hakkındaki öneri ve görüşlerinizi yazabilirsiniz.