İşinize Yarayacak En İyi PowerShell Komutları (Cmdlet)
Çoğumuz otomasyon yetenekleri nedeniyle PowerShell’i tercih ediyoruz. Tamamen gelişmiş bir betik diline sahip bir komut satırı kabuğu olan PowerShell ile, Windows‘un ve diğer uyumlu işletim sistemlerinin yönetim görevlerini otomatikleştirmek için yerleşik cmdlet’leri kullanabilir veya kendi komut dosyanızı yazabilirsiniz. GUI uygulamalarıyla yapabileceğiniz her şeyi ve daha fazlasını yapmanızı sağlar.
Ancak PowerShell‘in işlevselliğine ve esnekliğine hakim olmak zorlu bir öğrenme eğrisi gerektirir. PowerShell’i yeni kullanmaya başlıyorsanız, uzun vadede bu betik dilinde uzmanlaşmak için öğrenebileceğiniz temel komutları bu makalemizde bulabilirsiniz.
1. Yardım Alın
Get-Help, adından da anlaşılacağı gibi PowerShell’in entegre yardım sisteminin bir parçasıdır. Komut, kavramlar ve işlevler için gerekli bilgileri bulmanıza, takma adı, komut dosyalarını ve daha fazlasını tanımlamanıza yardımcı olur.
PowerShell cmdlet’iyle ilgili yardım almak için Get-help cmdlet’ini ve ardından bir cmdlet adını kullanmanız gerekir. Örneğin, get-process cmdlet’iyle ilişkili özet ve sözdizimlerini görüntülemek için şunu yazın:
Get-Help Get-Process
Bu komut, işlev yazarı tarafından sağlanan hem yorum tabanlı hem de XML tabanlı yardımı okuyabilir.
Alternatif olarak, çevrimiçi bir PowerShell cmdlet’i için yardım almak üzere Get-Help -online komutunu kullanabilirsiniz. Örneğin, Get-Content cmdlet’ine ilişkin Microsoft’un çevrimiçi belgelerini görüntülemek için şunu yazın:
Get-Help Get-Content -online
2. Alma Süreci
Get -Process komutu, tüm aktif sistem işlemlerinin bir listesini tanımlayıcılarıyla (ID’lerle) almanıza ve göstermenize yardımcı olur. Sistem işlemlerini görüntülemek, durdurmak ve yeniden başlatmak için Windows Görev Yöneticisi’ne etkili bir alternatif olarak kullanabilirsiniz.
Örneğin GameBar işlemini durdurmanız gerekiyorsa öncelikle onunla ilişkili işlem kimliğini bulmanız gerekir. Yani şunu yazın:
Get-Process
Bu komut çalışan tüm sistem işlemlerini gösterecektir. Daha sonra durdurmak istediğiniz işlemle ilişkili kimliği bulun. İşlemi durdurmak için şunu yazın:
Get-Process -ID 20496 | Stop-Process
Burada -ID 20496, durdurmak istediğiniz işlemin (GameBar) kimliğidir.
3. Başlangıç Süreci
Yerel bilgisayarda bir veya daha fazla işlemi başlatmak için PowerShell’deki İşlem Başlat cmdlet’ini kullanabilirsiniz. Cmdlet’i kullanmak için Start-Process ve ardından işlem adını yazın. Örneğin, yeni bir not defteri işlemi başlatmak istiyorsanız şunu yazın:
Start-Process notepad
Ek olarak seçenekleri belirlemek için İşlem Başlat parametrelerini kullanabilirsiniz. Örneğin, bir işlemi yönetici olarak başlatmanız gerekiyorsa şunu yazın:
Start-Process -FilePath "notepad" -Verb runAs
4. Komut Al
Get -Command, bilgisayarınızda yüklü olan tüm PowerShell komutlarını görüntülemenizi sağlar. Get-Help’e benzer şekilde, belirli bir özelliğe yönelik komutları bulmak için Get-Command’ı ve ardından bir arama sorgusunu kullanabilirsiniz.
Get-Command tüm komutları görüntülediğinden, belirli bir ada ve CommandType’a sahip özellikleri bulmak için parametreler belirleyebilirsiniz. Örneğin, A (Ad) ile başlayan cmdlet’leri (CommandTypes) bulmak için şunu yazın:
Get-Command -Name A* -CommandType cmdlet
Alternatif olarak, daha fazla örnek görüntülemek için Get-Help Get-Command -Examples yazın.
5. Hizmet Alın
Get -Service cmdlet’i bilgisayarınızın durumunu ve hizmetlerin listesini görüntülemenizi sağlar. Varsayılan olarak Get-Service komutu tüm (durdurulmuş ve çalışan) hizmetleri döndürür.
Hizmetleri durumlarına, adlarına ve bağımlı hizmetlere göre belirlemek ve bulmak için parametreleri kullanabilirsiniz. Örneğin, Win adıyla başlayan tüm hizmetleri görüntülemek için şunu yazın:
Get-Service -Name "Win*"
6. Get-ChildItem
Dizinlerde arama yapmak için PowerShell’i kullanabilirsiniz. Get -ChildItem komutu, Dosya Gezgini’ni kullanmadan klasörleri ve dosyaları aramak ve hızlı bir şekilde içerik tabanlı aramalar gerçekleştirmek için kullanışlı bir cmdlet’tir.
C:\ dizinindeki tüm üst düzey klasörleri görüntülemek için şunu yazın:
Get-ChildItem "C:\"
Ayrıca belirli bir klasörü, alt klasörleri ve içeriği görüntülemek için -Path parametresini kullanın. Örneğin, Program Dosyaları klasöründeki tüm alt klasörleri ve dosyaları görüntülemek için şunu yazın:
Get-ChildItem -Path "C:\Program Files"
Ayrıca, belirtilen klasördeki tüm dosyaları görüntülemek için – Recurse parametresini ve bir dizindeki öğe adlarını görüntülemek için -Name parametresini kullanın.
Get-ChildItem -Path "C:\Program Files\Fodler_Name" -Recurse | Select FullName
Yukarıdaki komutta, içeriğini görüntülemek için alt klasörü klasör adıyla değiştirin.
7. Öğeyi Kopyala
Copy -Item cmdlet’i, dosyaları, klasörleri ve içeriklerini farklı bir dizine kopyalayıp yapıştırmanıza olanak tanır. Dosyaları ve klasörleri kopyalamak için Copy-Item yazın, ardından kaynak – Yol, -Destination parametresini ve hedef adresi yazın. Örneğin, E:\Folder1 ve içeriğini E:\Folder2 dizinine kopyalamak için şunu yazın:
Copy-Item "E:\Folder1" -Destination "E:\Folder2" -Recurse
Yukarıdaki komuttaki -Recurse parametresinin tüm klasör içeriğinin taşınmasından sorumlu olduğunu unutmayın. Bu olmadan PowerShell yalnızca üst düzey klasörü (Klasör1) ve komutta belirtilen dosyaları kopyalar.
8. Öğeyi Taşı
Benzer şekilde, bir öğeyi taşımak için Move-Item cmdlet’ini kullanabilirsiniz. Örneğin, klasörü, dosyaları, alt klasörleri ve tüm içeriğini belirttiğiniz hedefe taşımak için şunu yazın:
Move-Item -Path "E:\Folder1" -Destination "E:\Folder2"
9. Öğeyi Kaldır
Remove -Item cmdlet’i belirtilen dizindeki dosyaları, klasörleri, işlevleri ve diğer veri türlerini silmenizi sağlar. Örneğin, E:\Folder1 klasöründeki Test.txt dosyasını silmek için şunu yazın:
Remove-Item E:\Folder1\Test.txt
10. İçerik Al
Get -Content cmdlet’i, bir öğe öğesinin içeriğini bir metin düzenleyici kullanmadan görüntülemenizi sağlar. Örneğin, Test.txt dosyasının içeriğini almak için şunu yazın:
Get-Content "E:\Folder1\Test.txt"
-TotalCount parametresini kullanarak görüntülenecek içerik uzunluğunu daha da belirleyebilirsiniz.
11. Açık İçerik
Belirtilen bir dosyanın içeriğini, dosyanın kendisini silmeden silmek için Clear-Content cmdlet’ini kullanabilirsiniz. Sabit kodlanmış bir dosya adına sahip olduğunuz ancak betiğin her çalıştırılmasında temiz bir dosyaya sahip olmak istediğiniz görev otomasyonu için kullanışlıdır.
Komutu test etmek için içinde bazı içeriklerin bulunduğu bir metin dosyası oluşturun. Sonra şunu yazın:
Clear-Content -Path "E:\Folder1\Test1.txt"
Bu, dosyayı silmeden dosyanın içeriğini siler.
12. Set-ExecutionPolicy
PowerShell’deki varsayılan yürütme ilkesi Kısıtlı olarak ayarlanmıştır. Bu, PowerShell ortamında kötü amaçlı komut dosyalarının yürütülmesini engeller. Ancak yerel bir PowerShell betiğini çalıştırdığınızda bu sistem hatasında yürütme betiğinin devre dışı bırakıldığıyla karşılaşabilirsiniz.
Set -ExecutionPolicy cmdlet’leri, komut dosyası yürütmeye yönelik güvenlik düzeylerini değiştirmenize olanak tanır. Mevcut yürütme politikanızı öğrenmek için şunu yazın:
Get-ExecutionPolicy
İmzasız bir betiği çalıştırmanız gerekiyorsa yükseltilmiş bir PowerShell isteminde şunu yazın:
Set-ExecutionPolicy RemoteSigned
Diğer geçerli Set-ExecutionPolicy değerleri arasında Restricted, AllSigned ve Unrestricted bulunur.
13. Ayar-Konum
Varsayılan olarak PowerShell, varsayılan çalışma dizini olarak C:\Kullanıcılar\Kullanıcıadı’nı kullanır. Set -Location cmdlet’i geçerli çalışma dizinini belirli bir konuma ayarlamanıza olanak tanır. Her seferinde yolu belirtmek zorunda kalmadan belirli bir konumdan bir komut dosyası veya komut çalıştırmak istiyorsanız kullanışlıdır.
Örneğin, C:\Kullanıcılar\Kullanıcı Adı\Documents’ı geçerli çalışma dizini olarak ayarlamak için şunu yazın:
Set-Location "C:\Users\usrename\Documents"
Bu, PowerShell’in yeniden başlatmanın ardından çalışma dizinini varsayılan dizinine sıfırlayacağından geçici bir önlemdir.
14. Dışa Aktarma-CSV
PowerShell çıktısını daha düzenli bir şekilde dışa aktarmak ve sunmak istiyorsanız Export-CSV cmdlet’ini kullanabilirsiniz. Belirtilen komutun çıktı dosyasını alır ve onu bir CSV dosyasına dönüştürür.
Komutu test etmek için aşağıdaki komutu deneyin:
Get-Process | Export-CSV PSprocess.csv
Yukarıdaki komut, tüm aktif süreçlerin verilerini içeren bir psporcess.csv dosyası oluşturacaktır.
15.HTML’ye Dönüştür
Bir HTML raporu oluşturmayı tercih ederseniz ConvertTo-HTML Cmdlet’ini kullanabilirsiniz. Bilgisayarınızda çalışan tüm işlemlere ilişkin bir HTML raporu oluşturmak için şunu yazın:
Get-Process | ConvertTo-HTML > PSprocess.html
Yukarıdaki komutta psprocess, dışa aktarma dosyasının adıdır ve HTML, uzantısıdır. Dışa aktarılan HTML dosyasına C:\Kullanıcılar\kullanıcı adı konumunda bulunan geçerli çalışma dizininden erişebilirsiniz.
16. Geçmişi Al
PowerShell’de yakın zamanda yürütülen komutlar arasında gezinmek için Yukarı-Aşağı ok tuşunu kullanabilirsiniz. Ancak, geçerli oturumunuzda yakın zamanda yürütülen tüm komutların listesini aynı anda görüntülemek için Get-History cmdlet’ini kullanabilirsiniz.
Kimlikleriyle birlikte yakın zamanda yürütülen tüm komutların bir listesini görüntüler. Daha önce yürütülen komutların tam içeriğini görüntülemek istiyorsanız kullanışlıdır. Bunu yapmak için şunu yazın:
Get-History Id | fl
Örneğin, üçüncü komutun durumu, başlangıç ve bitiş zamanı ve süresi gibi yürütme ayrıntılarını görüntülemek için şunu yazın:
get-history 3 | fl,
Listedeki herhangi bir komutu yeniden çalıştırmak için şunu yazın:
Invoke-History followed by the command id
Örneğin, daha önce yürütülen bir komutu tekrar yazmadan yeniden çalıştırmak için Invoke-History 3 yazın.
Ek olarak, geçerli oturumun geçmişini temizlemek için Geçmişi Temizle’yi kullanın.
Görevlerinizi Kolaylaştıracak PowerShell Komutları
PowerShell otomasyon yetenekleriyle tanınır. Bu, zamandan tasarruf etmek ve üretkenliği artırmak için geliştirme çalışmanızdaki yüzlerce etkinliği otomatikleştirmenize yardımcı olabilir.
Yalnızca temel komutları ele almış olsak da, bu yüksek verimli kodlama diline hakim olmak için bu komutların çoğunda bulunan sözdizimini, takma adı ve değişkenleri ve işlevleri keşfetmeye çalışın.