PowerShell ile Gelişmiş Sistem Yönetimi ve Otomasyon

Bilgi teknolojileri (BT) dünyasında, sistem yöneticileri ve ağ uzmanları için manuel işlemleri otomatize etmek hayati bir önem taşır. Özellikle çok sayıda cihazın bulunduğu laboratuvar ortamlarında veya kurumsal ağ altyapılarında, rutin yapılandırmaları cihazlara hızlıca dağıtmak için güçlü araçlara ihtiyaç duyulur. Microsoft tarafından geliştirilen modern bir otomasyon platformu ve görev tabanlı betik dili olan PowerShell, bu ihtiyacı karşılamak üzere tasarlanmıştır.



Bölüm 1: PowerShell'e Giriş

Seviye: Başlangıç
Hedef Kitle: Sistem Yöneticileri, Siber Güvenlik Uzmanları, BT Öğretmenleri, DevOps Mühendisleri ve Windows Sunucu Yöneticileri


İçindekiler

  1. PowerShell Nedir?

  2. Neden PowerShell Öğrenmeliyiz?

  3. CMD ve PowerShell Arasındaki Farklar

  4. Windows PowerShell ve PowerShell 7

  5. PowerShell Mimarisi

  6. PowerShell Sürümleri

  7. PowerShell Konsolunu Tanıyalım

  8. İlk Komutlarımız

  9. Yardım Sistemi

  10. Komut Keşfetme

  11. Alias Kavramı

  12. PowerShell'in Çalışma Mantığı

  13. Object-Oriented Shell Kavramı

  14. Pipeline (Boru Hattı)

  15. İlk Laboratuvar


1. PowerShell Nedir?

PowerShell, Microsoft tarafından geliştirilen nesne tabanlı (Object-Oriented) bir komut satırı kabuğu (Shell) ve betik (Scripting) dilidir.

İlk sürümü 2006 yılında yayımlanmıştır.

Linux dünyasında Bash neyse, Windows dünyasında PowerShell odur. Ancak PowerShell yalnızca bir kabuk değildir; aynı zamanda güçlü bir otomasyon ve yönetim platformudur.

PowerShell ile:

  • Windows yönetebilirsiniz.

  • Sunucu yönetebilirsiniz.

  • Active Directory yönetebilirsiniz.

  • Azure yönetebilirsiniz.

  • Microsoft 365 yönetebilirsiniz.

  • VMware yönetebilirsiniz.

  • Hyper-V yönetebilirsiniz.

  • SQL Server yönetebilirsiniz.

  • Docker yönetebilirsiniz.

  • SSH üzerinden Linux sunucularını yönetebilirsiniz.

  • Windows bilgisayarları SSH ile uzaktan yönetebilirsiniz.


2. PowerShell Neden Geliştirildi?

Eski Windows komut satırı (CMD) birçok konuda yetersizdi.

Örneğin:

dir

çıktısı yalnızca metindir.

Bu metin üzerinde işlem yapmak zordur.

PowerShell ise:

Get-ChildItem

komutunu çalıştırdığında size sadece yazı değil, nesneler (Objects) döndürür.

Bu nesnelerin;

  • Name

  • Length

  • CreationTime

  • LastWriteTime

  • Extension

  • Attributes

gibi özellikleri vardır.

Bu nedenle PowerShell ile filtreleme, sıralama, raporlama ve otomasyon çok daha kolaydır.


3. CMD ve PowerShell Karşılaştırması

Özellik        CMDPowerShell
Çıkış türü        Metin        Nesne (Object)
Programlama dili        Batch        Gelişmiş Script Dili
Pipeline        Sınırlı        Güçlü
Hata Yönetimi        Basit        Gelişmiş
Active Directory        Hayır        Evet
Registry Yönetimi        Kısıtlı        Tam Destek
WMI/CIM        Yok        Var
JSON        Yok        Var    
XML        Yok        Var
REST API        Yok        Var
SSH        Sınırlı        Yerleşik Destek
Platform        Windows        Windows, Linux, macOS

4. Windows PowerShell ve PowerShell 7

PowerShell'in iki ana sürümü vardır.

Windows PowerShell (5.1)

Yerleşik olarak Windows ile gelir.

Çalıştırmak için:

powershell

Sürümü öğrenelim:

$PSVersionTable

Örnek:

PSVersion                      5.1.26100.4652
PSEdition                      Desktop
OS                             Microsoft Windows

PowerShell 7

Modern sürümdür.

.NET üzerine kuruludur.

Platform bağımsızdır.

Windows

Linux

macOS

üzerinde çalışır.

Başlatmak için:

pwsh

Sürüm:

$PSVersionTable

Örnek:

PSVersion                      7.5.0
PSEdition                      Core

5. PowerShell Nerelerde Çalışır?

PowerShell şu ortamlarda kullanılabilir:

  • Windows 10

  • Windows 11

  • Windows Server

  • Azure

  • Microsoft 365

  • Linux

  • Pardus

  • Ubuntu

  • Debian

  • Kali Linux

  • Fedora

  • macOS

Örneğin Pardus üzerinde PowerShell 7 kurarak Windows sunucularını SSH ile yönetebilirsiniz.


6. PowerShell'i Açma Yöntemleri

Başlat Menüsü

Arama kutusuna:

PowerShell

yazın.


Çalıştır Penceresi

Win + R

ardından:

powershell

CMD İçinden

powershell

SSH Bağlantısı Sonrası

Pardus'tan Windows'a bağlandıktan sonra:

ssh Administrator@192.168.1.100

CMD açıldıysa:

powershell

veya doğrudan PowerShell ile bağlanmak için:

ssh -t Administrator@192.168.1.100 powershell

7. PowerShell Konsolunu Tanıyalım

Örnek istem:

PS C:\Users\Administrator>

Buradaki bileşenler:

  • PS → PowerShell istemi

  • C: → Geçerli sürücü

  • \Users\Administrator → Çalışma dizini

  • > → Komut bekleniyor


8. İlk PowerShell Komutlarımız

Bulunduğunuz dizini öğrenin:

Get-Location

Kısa yazımı:

pwd

Dizin içeriğini listeleyin:

Get-ChildItem

Kısa yazımı:

dir

veya

ls

PowerShell, Bash ve CMD kullanıcılarının alışkanlıklarını kolaylaştırmak için birçok takma ad (alias) içerir.


9. Yardım Sistemi (Get-Help)

PowerShell'in en güçlü özelliklerinden biri yerleşik yardım sistemidir.

Bir komutun yardımını görüntülemek için:

Get-Help Get-Process

Ayrıntılı yardım:

Get-Help Get-Process -Detailed

Tam yardım:

Get-Help Get-Process -Full

Sadece örnekler:

Get-Help Get-Process -Examples

İlk kullanımda yardım dosyalarını güncellemek için yönetici olarak:

Update-Help

10. Komut Keşfetme

Belirli bir konuda hangi komutların bulunduğunu öğrenmek için Get-Command kullanılır.

Örneğin süreç (process) yönetimi:

Get-Command *Process*

Servis yönetimi:

Get-Command *Service*

SSH ile ilgili komutlar:

Get-Command *SSH*

11. Alias (Takma Ad) Kavramı

Birçok PowerShell komutunun kısa adı vardır.

AliasGerçek Komut
lsGet-ChildItem
dirGet-ChildItem
pwdGet-Location
catGet-Content
cpCopy-Item
mvMove-Item
rmRemove-Item

Alias'ları görmek için:

Get-Alias

Belirli bir alias'ı incelemek için:

Get-Alias ls

12. PowerShell'in Çalışma Mantığı

PowerShell'de komutlar genellikle şu yapıyı takip eder:

Verb-Noun

Örnekler:

Get-Process
Get-Service
Get-ChildItem
Start-Service
Stop-Service
Restart-Service
New-Item
Copy-Item
Remove-Item
Set-ExecutionPolicy

Bu standart yapı sayesinde komutları tahmin etmek ve öğrenmek kolaylaşır.


13. Object-Oriented Shell

PowerShell'in en önemli farkı metin yerine nesneler ile çalışmasıdır.

Örneğin:

Get-Process

çıktısı yalnızca ekrana yazılan satırlar değildir. Her süreç (process), belleğinde özellikleri ve metotları olan bir nesnedir.

Bu nesnelerin özelliklerini görmek için:

Get-Process | Get-Member

Get-Member, bir nesnenin sahip olduğu tüm özellikleri (Properties) ve metotları (Methods) listeler.


14. Pipeline (Boru Hattı)

PowerShell'in en güçlü özelliklerinden biri pipeline'dır.

Bir komutun çıktısı, diğer komuta metin olarak değil nesne olarak aktarılır.

Örnek:

Get-Process | Sort-Object CPU

En fazla bellek kullanan ilk 10 süreç:

Get-Process |
Sort-Object WorkingSet -Descending |
Select-Object -First 10

Çalışan servisleri listeleme:

Get-Service |
Where-Object Status -eq Running

15. İlk Laboratuvar

Aşağıdaki komutları sırayla çalıştırın ve çıktıları inceleyin:

$PSVersionTable
Get-Location
Get-ChildItem
Get-Help Get-Service -Examples
Get-Command *Service*
Get-Service
Get-Process
Get-Date
Get-Alias
Get-Process | Get-Member

Bölüm Özeti

Bu bölümde:

  • PowerShell'in ne olduğunu öğrendiniz.

  • CMD ile arasındaki temel farkları gördünüz.

  • Windows PowerShell ve PowerShell 7 sürümlerini tanıdınız.

  • Yardım sistemini ve komut keşfetme araçlarını kullandınız.

  • Alias kavramını öğrendiniz.

  • PowerShell'in neden nesne tabanlı olduğunu ve pipeline mantığını kavradınız.

  • İlk temel komutlarınızı çalıştırarak uygulamalı başlangıç yaptınız.


PowerShell Eğitimi

Bölüm 2: Cmdlet'ler, Yardım Sistemi ve Nesnelerle Çalışma

Seviye: Başlangıç → Orta
Hedef: PowerShell komutlarının yapısını öğrenmek, yardım sistemini etkin kullanmak ve nesneler üzerinde çalışmaya başlamak.


İçindekiler

  1. Cmdlet Nedir?

  2. Verb-Noun Yapısı

  3. Onaylı (Approved) Fiiller

  4. Get-Command

  5. Get-Help

  6. Update-Help

  7. Show-Command

  8. Get-Member

  9. Parametre Kullanımı

  10. Common Parameters

  11. Pipeline Mantığı

  12. Select-Object

  13. Where-Object

  14. Sort-Object

  15. Measure-Object

  16. Format-Table

  17. Format-List

  18. Format-Wide

  19. Out-Host ve Out-File

  20. İlk Gerçek Sistem Yönetimi Senaryoları

  21. Laboratuvar Çalışmaları


1. Cmdlet Nedir?

PowerShell'deki temel komutlara Cmdlet (Command-let) adı verilir.

CMD'deki komutlar:

dir
copy
move
tasklist

PowerShell'de ise cmdlet kullanılır:

Get-Process
Get-Service
Get-ChildItem
Copy-Item
Move-Item
Restart-Service

Bir cmdlet tek bir işi iyi yapacak şekilde tasarlanmıştır.


2. Verb-Noun Yapısı

PowerShell'deki tüm cmdlet'ler şu standardı izler:

Verb-Noun

Örneğin:

VerbNounAçıklama
GetProcessSüreçleri getir
GetServiceServisleri getir
StartServiceServisi başlat
StopServiceServisi durdur
RestartServiceServisi yeniden başlat
RemoveItemDosya sil
CopyItemDosya kopyala
RenameItemDosya yeniden adlandır
NewItemYeni dosya/klasör oluştur

Bu standart sayesinde komutları ezberlemek yerine tahmin etmek mümkündür.


3. Onaylı Fiiller (Approved Verbs)

PowerShell, rastgele fiiller yerine standart fiiller kullanır.

Tüm fiilleri görmek için:

Get-Verb

Örnek çıktı:

VerbAnlamı
GetGetir
SetAyarla
NewOluştur
RemoveSil
StartBaşlat
StopDurdur
RestartYeniden Başlat
ClearTemizle
InvokeÇalıştır
TestTest Et
ExportDışa Aktar
Importİçe Aktar
CompareKarşılaştır
ConvertDönüştür

Kendi fonksiyonlarınızı yazarken de bu fiilleri kullanmanız önerilir.


4. Get-Command

PowerShell'deki en önemli keşif aracıdır.

Tüm komutları listeler:

Get-Command

Sadece servis komutları:

Get-Command *Service*

SSH komutları:

Get-Command *SSH*

Firewall:

Get-Command *Firewall*

Network:

Get-Command *Net*

Active Directory:

Get-Command *AD*

Bir komutun hangi modülden geldiğini öğrenmek:

Get-Command Get-Service

Örnek:

CommandType Name        Version Source
----------- ----        ------- ------
Cmdlet      Get-Service 7.0.0   Microsoft.PowerShell.Management

5. Get-Help

PowerShell'in yerleşik dokümantasyon sistemidir.

Temel kullanım:

Get-Help Get-Service

Detaylı yardım:

Get-Help Get-Service -Detailed

Tam yardım:

Get-Help Get-Service -Full

Sadece örnekler:

Get-Help Get-Service -Examples

Bu seçenek günlük çalışmalarda en sık kullanılanıdır.


6. Yardım Dosyalarını Güncelleme

İlk kurulumdan sonra:

Update-Help

Yönetici olarak çalıştırılmalıdır.

Belirli modül:

Update-Help -Module Microsoft.PowerShell.Management

7. Show-Command

GUI üzerinden cmdlet oluşturmayı sağlar.

Show-Command Get-Service

Komut parametrelerini grafik arayüzden seçebilirsiniz.

Not: Bu özellik Windows PowerShell'de bulunur; PowerShell 7 ve platformlar arası sürümlerde her zaman desteklenmeyebilir.


8. Get-Member

PowerShell'in en güçlü komutlarından biridir.

Bir nesnenin tüm özelliklerini gösterir.

Örneğin:

Get-Process | Get-Member

Çıktı:

TypeName:
System.Diagnostics.Process

Property örnekleri:

CPU
Id
ProcessName
WorkingSet
StartTime
Threads

Method örnekleri:

Kill()

Close()

Refresh()

WaitForExit()

Artık PowerShell'in neden nesne tabanlı olduğu daha net görülür.


9. Parametre Kullanımı

Bir cmdlet'in davranışı parametrelerle değiştirilir.

Örnek:

Get-Process -Name explorer

Birden fazla süreç:

Get-Process -Name chrome

ID ile:

Get-Process -Id 1234

10. Common Parameters

Tüm cmdlet'lerde ortak olarak bulunur.

En önemlileri:

-Verbose

-Debug

-ErrorAction

-ErrorVariable

-WarningAction

-WhatIf

-Confirm

Örneğin:

Remove-Item test.txt -WhatIf

Silmez.

Sadece ne yapacağını gösterir.

Bu özellikle üretim ortamlarında güvenli deneme yapılabilir.


11. Pipeline Mantığı

PowerShell'in kalbi pipeline'dır.

Komut 1
      ↓
Object
      ↓
Komut 2
      ↓
Object
      ↓
Komut 3

Örnek:

Get-Service |
Where-Object Status -eq Running |
Sort-Object Name

CMD'den en büyük fark budur.


12. Select-Object

Belirli alanları seçmek için kullanılır.

Get-Process |
Select-Object Name,CPU

İlk 10 süreç:

Get-Process |
Select-Object -First 10

Son 5 süreç:

Get-Process |
Select-Object -Last 5

Benzersiz kayıtlar:

Select-Object -Unique

13. Where-Object

Filtreleme yapar.

Örneğin çalışan servisler:

Get-Service |
Where-Object Status -eq Running

Sadece Chrome süreçleri:

Get-Process |
Where-Object ProcessName -like "*chrome*"

Belleği 500 MB üzeri kullanan süreçler:

Get-Process |
Where-Object WorkingSet -gt 500MB

14. Sort-Object

Sıralama yapar.

CPU kullanımına göre:

Get-Process |
Sort-Object CPU

Ters sıralama:

Get-Process |
Sort-Object CPU -Descending

15. Measure-Object

İstatistik üretir.

Kaç süreç var?

Get-Process |
Measure-Object

Toplam CPU:

Get-Process |
Measure-Object CPU -Sum

En büyük:

Measure-Object CPU -Maximum

Ortalama:

Measure-Object CPU -Average

16. Format-Table

Tablo oluşturur.

Get-Service |
Format-Table

Belirli sütunlar:

Get-Service |
Format-Table Name,Status

Otomatik genişlik:

Get-Service |
Format-Table Name,Status -AutoSize

17. Format-List

Liste görünümü sağlar.

Get-Process |
Format-List

Belirli alanlar:

Get-Process |
Format-List Name,CPU

18. Format-Wide

Tek sütun görünümü:

Get-Service |
Format-Wide Name

19. Out-Host ve Out-File

Ekrana yazdırma:

Get-Service |
Out-Host

Dosyaya kaydetme:

Get-Service |
Out-File servisler.txt

UTF-8 kodlamasıyla:

Get-Service |
Out-File servisler.txt -Encoding utf8

20. Gerçek Sistem Yönetimi Senaryoları

Çalışan servisleri listele

Get-Service |
Where-Object Status -eq Running |
Sort-Object Name

En çok RAM kullanan ilk 10 süreç

Get-Process |
Sort-Object WorkingSet -Descending |
Select-Object -First 10 Name,Id,WorkingSet

En son değiştirilen 20 dosya

Get-ChildItem C:\Logs |
Sort-Object LastWriteTime -Descending |
Select-Object -First 20

Diskteki en büyük dosyalar

Get-ChildItem C:\ -Recurse -File |
Sort-Object Length -Descending |
Select-Object -First 20 Name,Length

Not: Büyük disklerde bu komut uzun sürebilir ve erişim izinleri nedeniyle bazı klasörlerde hata verebilir. Gerekirse -ErrorAction SilentlyContinue parametresi kullanılabilir.


Son çalışan süreçler

Get-Process |
Sort-Object StartTime -Descending

Bazı sistem süreçleri StartTime bilgisini göstermeyebilir; bu durumda ilgili kayıtlar hata oluşturabilir.


21. Laboratuvar Çalışmaları

Aşağıdaki uygulamaları sırasıyla gerçekleştirin:

Laboratuvar 1

Tüm cmdlet'leri sayın.

Get-Command | Measure-Object

Laboratuvar 2

Bilgisayardaki tüm servisleri bulun.

Get-Service

Laboratuvar 3

Sadece çalışan servisleri listeleyin.

Get-Service |
Where-Object Status -eq Running

Laboratuvar 4

En fazla CPU kullanan ilk 5 süreci bulun.

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

Laboratuvar 5

Get-Service komutunun örneklerini görüntüleyin.

Get-Help Get-Service -Examples

Laboratuvar 6

Get-Process nesnesinin tüm özelliklerini inceleyin.

Get-Process | Get-Member

Bölüm Özeti

Bu bölümde:

  • Cmdlet yapısını ve Verb-Noun standardını öğrendiniz.

  • Get-Command ile komut keşfetmeyi öğrendiniz.

  • Get-Help ve Update-Help ile yardım sistemini etkin kullanmayı gördünüz.

  • Get-Member ile nesnelerin özelliklerini incelemeyi öğrendiniz.

  • Select-Object, Where-Object, Sort-Object ve Measure-Object cmdlet'leriyle veri seçme, filtreleme, sıralama ve özetleme işlemlerini gerçekleştirdiniz.

  • Gerçek sistem yönetimi senaryolarında bu cmdlet'leri kullanarak günlük yönetim görevlerine yönelik uygulamalar yaptınız.



Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu