PowerShell temelleri: cmdlet, boru hattı, betik
Windows ve Linux’ta çalışan PowerShell ile nesne tabanlı komutlar, veri süzme ve küçük otomasyon betikleri yazmayı sıfırdan öğrenirsin.
Seviye 101 · 24 ders · 27 pratik lab
Dersler
İlk adımlar
- PowerShell nedir, kabuktan farkı ne: PowerShell’in komutları metin yerine nesne döndürdüğünü ve neden sistem yöneticileri ile güvenlik ekiplerinin onu kullandığını açıklayabilirsin.
- Cmdlet mantığı: Fiil-İsim, Get-Help ve Get-Command: Fiil-İsim kalıbını kullanıp Get-Command ve Get-Help ile ezberlemeden doğru komutu bulabilirsin.
- Dosya sisteminde gezinmek: Get-ChildItem ve Set-Location: Get-ChildItem ve Set-Location ile dizinler arasında gezinip dosyaları ad, tür ve boyuta göre listeleyebilirsin.
- Dosya ve klasör işlemleri: New-Item, Copy-Item, Move-Item, Remove-Item: Bir proje çalışma alanını komutla kurup dosyaları kopyalayabilir, taşıyabilir ve -WhatIf ile silmeden önce sonucu görebilirsin.
- Metin dosyalarını okumak ve yazmak: Get-Content, Set-Content, Add-Content: Get-Content, Set-Content ve Add-Content ile bir metin dosyasını okuyup güncelleyebilir, çıktıyı dosyaya yönlendirebilirsin.
- Değişkenler, dizeler ve aritmetik: Değişken tanımlayıp dizeleri birleştirebilir, biçimlendirebilir ve basit hesaplar yapabilirsin.
- Kısa görev: eski günlük dosyalarını arşiv klasörüne taşı
Nesneler, boru hattı ve veri
- Nesneler ve özellikler: Get-Member: Get-Member ile bir komutun döndürdüğü nesnenin özelliklerini ve yöntemlerini keşfedebilirsin.
- Boru hattı: Where-Object, Select-Object ve Sort-Object: Where-Object, Select-Object ve Sort-Object ile bir listeden dikkat isteyen dosyaları süzüp sıralayabilirsin.
- Gruplamak ve ölçmek: Group-Object ve Measure-Object: Group-Object ve Measure-Object ile dosya ya da kayıt koleksiyonunun toplam, ortalama ve dağılımını özetleyebilirsin.
- Diziler, karma tablolar ve özel nesneler: Dizi, karma tablo ve PSCustomObject ile cihaz envanteri gibi yapılandırılmış veriyi bellekte kurabilirsin.
- Çıktıyı biçimlendirmek: Format-Table, Format-List ve Out-File: Çıktıyı tablo ya da liste olarak biçimlendirip dosyaya yazabilir ve ekran görünümü ile veriyi ayırt edebilirsin.
- CSV verisi: Import-Csv ve Export-Csv: Import-Csv ve Export-Csv ile bir stok ya da envanter tablosunu okuyup düşük stoklu kayıtları ayıklayabilirsin.
- JSON verisi: ConvertFrom-Json ve ConvertTo-Json: ConvertFrom-Json ve ConvertTo-Json ile bir uygulama yapılandırmasını okuyup bir değerini güvenle güncelleyebilirsin.
- Metin aramak ve dönüştürmek: Select-String, -match ve -replace: Select-String ve düzenli ifadelerle uygulama günlüklerinden hata satırlarını çıkarıp biçimini dönüştürebilirsin.
- Kısa görev: CSV personel listesinden departman özeti çıkar
Betik ve otomasyon
- İlk betik ve yürütme ilkesi: .ps1 ve ExecutionPolicy: İlk .ps1 betiğini yazıp çalıştırabilir, ExecutionPolicy’nin neyi korumadığını ve neyi koruduğunu açıklayabilirsin.
- Koşullar ve döngüler: if, foreach ve switch: if, foreach ve switch ile gelen belgeleri türüne göre ayıran küçük bir betik yazabilirsin.
- Fonksiyonlar ve betik parametreleri: param bloğu ve fonksiyonlarla tekrar kullanılabilir bir envanter raporu betiği yazabilirsin.
- Hata yönetimi ve girdi doğrulama: try/catch, -ErrorAction: try/catch, -ErrorAction ve parametre doğrulamayla veri içe aktaran bir betiği hatalara karşı güvenilir kılabilirsin.
- Süreçleri ve servisleri yönetmek: Get-Process, Stop-Process, Get-Service: Get-Process ve Get-Service ile takılan bir işlemi bulup durdurabilir ve servislerin durumunu raporlayabilirsin.
- Olay günlüklerini okumak: Get-WinEvent: Get-WinEvent ile başarısız oturum açmalar gibi güvenlik olaylarını süzüp bir zaman çizelgesi çıkarabilirsin.
- REST API çağırmak: Invoke-RestMethod: Invoke-RestMethod ile bir API’den veri çekip bir kaydı güncelleyebilir, belirteci betiğe gömmeden kullanabilirsin.
- Bitirme görevi: zamanlanabilir bir envanter otomasyonu: Dosya, CSV ve JSON adımlarını tek betikte birleştirip günlük çalışabilen bir proje envanteri otomasyonu kurabilirsin.
Pratik lablar
- Nesnenin özelliklerini Get-Member ile keşfet: Süreç nesnelerinin özelliklerini Get-Member ile incele ve bellek kullanımını tutan özelliğin adını cevap olarak gir.
- Dosyaları uzantıya göre grupla ve ölç: Paylaşım klasöründeki dosyaları uzantıya göre grupla ve her grubun dosya sayısı ile toplam boyutunu raporla.
- Özel nesnelerle birleşik rapor üret: Disk ve süreç bilgisinden sunucu adı, boş alan ve en yoğun süreç alanlarını taşıyan özel nesne oluştur ve dosyaya yaz.
- CSV personel listesinden departman özeti çıkar: Personel CSV'sini içe aktar, departman başına kişi sayısını hesapla ve sonucu yeni bir CSV'ye aktar.
- JSON yapılandırmasında bir değeri güncelle: JSON yapılandırmasını nesneye çevir, günlük düzeyini değiştir ve derinliği koruyarak dosyaya geri yaz.
- İki CSV'yi ortak sütunda birleştir: Cihaz ve kullanıcı CSV'lerini kullanıcı kimliğine göre birleştir, eşleşmeyen cihazları ayrı dosyada raporla.
- İlk .ps1 betiğini yaz ve çalıştır: Sunucu adını, tarihi ve boş disk alanını yazan bir betik oluştur ve pwsh ile çalıştır.
- Dosyaları türüne göre klasörlere dağıt: foreach ve switch ile indirilen dosyaları uzantılarına göre belge, resim ve arşiv klasörlerine taşıyan betik yaz.
- Hatalarda durmayan ama raporlayan betik yaz: Listedeki dosyaları kopyalayan, eksik ya da erişilemeyen dosyaları try/catch ile yakalayıp hata raporuna yazan betik yaz.
- İşi yapan cmdlet'i Get-Command ile bul: Adını bilmediğin bir işi yapan cmdlet'i Get-Command ve Get-Help ile bul ve örneğini çalıştırıp çıktıyı kaydet.
- Yardım sayfasından doğru parametreyi bul: Get-Help -Parameter ve -Examples ile Get-ChildItem'ın yalnızca dosyaları ve gizli öğeleri listeleyen parametrelerini bul, komutu çalıştır ve kullandığın parametre adlarını yaz.
- Boru hattından girdi alan cmdlet'i yardımdan kanıtla: Get-Command -Noun ve -ParameterName ile servislerle çalışan cmdlet'leri listele, kısa adlarını Get-Alias ile çöz, about_ yardım konusunu okuyarak boru hattından girdi kabul eden parametreyi bul ve bir örnekle doğrula.
- Eski günlük dosyalarını arşiv klasörüne taşı: Otuz günden eski .log dosyalarını Get-ChildItem ve Move-Item ile arşiv klasörüne taşı.
- Ağaçtaki en büyük on dosyayı bul: Proje ağacını özyinelemeli tara ve en büyük on dosyayı boyutlarıyla birlikte tablo olarak yaz.
- Yapılandırma dosyalarında değeri toplu değiştir: Get-Content ve Set-Content ile tüm .conf dosyalarındaki eski sunucu adını değiştir, önce yedeklerini al ve değişen dosyaları listele.
- Günlükte bir sözcüğün geçtiği satırları bul: Select-String ile uygulama günlüğünde ERROR geçen satırları bul ve kaç tane olduğunu ilk eşleşmenin satır numarasıyla birlikte yaz.
- Günlükten başarısız girişlerin IP'lerini çıkar: Select-String ve -match ile başarısız giriş satırlarından IP adreslerini çıkar ve IP başına sayıları ver.
- Birçok günlükte hatayı bağlamıyla tara: Select-String'i -Path, -Context ve adlandırılmış yakalama gruplarıyla kullanarak bir klasördeki tüm günlüklerde zaman aşımı hatalarını önceki iki satırla birlikte çıkar, dosya ve servis adına göre sayıp tabloya dök.
- En çok bellek kullanan süreçleri listele: Süreçleri bellek kullanımına göre sırala ve ilk beşini ad, kimlik ve megabayt cinsinden bellek sütunlarıyla göster.
- Kontrolden çıkmış süreci bul ve durdur: İşlemciyi en çok kullanan süreci Get-Process ile bul, adını ve başlangıç zamanını kaydet, Stop-Process ile sonlandır ve yeniden başlamadığını doğrula.
- Servis ve süreç durumunu nesne olarak raporla: Verilen süreç adları için çalışma durumu, bellek ve başlangıç zamanını tek nesnede birleştiren bir işlev yaz ve çıktıyı CSV'ye aktar.
- Betiğe varsayılan değerli bir parametre ekle: Klasör yolunu sabit yazan betiğe param bloğuyla -Path parametresi ekle; verilmezse geçerli klasörü kullansın ve iki biçimde de çalıştırıp çıktıyı kaydet.
- Parametre alan fonksiyon yaz: Klasör yolu ve gün sayısı alan, o süreden eski dosyaları listeleyen parametreli bir fonksiyon yaz.
- Girdiyi doğrulayan temizlik betiği yaz: Var olmayan ya da kök dizin gibi tehlikeli yolları reddeden, geçerli yolda eski dosyaları silen betik yaz.
- Temel sistem bilgisini JSON dosyasına yaz: Sunucu adını, işletim sistemi sürümünü ve boş disk alanını tek bir nesnede topla ve ConvertTo-Json ile dosyaya kaydet.
- Yerel API'den veri çek ve süz: Laboratuvardaki yerel API'yi Invoke-RestMethod ile çağır ve durumu etkin olmayan kayıtları tablo olarak yaz.
- Zamanlanabilir envanter betiği yaz: İşletim sistemi, disk ve çalışan süreç bilgilerini toplayıp tarihli bir JSON dosyasına yazan, etkileşimsiz çalışan betik hazırla.
Kurs hakkında
Windows ve Linux’ta çalışan PowerShell ile nesne tabanlı komutlar, veri süzme ve küçük otomasyon betikleri yazmayı sıfırdan öğrenirsin.
Ne öğreneceksin
- İlk adımlar
- Nesneler, boru hattı ve veri
- Betik ve otomasyon
Ön koşullar
Ön bilgi gerekmez; kurs sıfırdan başlar.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs başlangıç düzeyindedir; her terim ilk geçtiği yerde açıklanır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.