PowerShell TEMEL DERSLER 3 (PowerShell’i keşfediyoruz…Parametreler)

Powershell temel derslerimize devam ediyoruz. Geçen derste anlattığımız örnekleri tekrar edecek olursak

C:\>Get-Command -Noun Process komutu

1

Komut’un noun kısmının “process” olanlarını listeler. (Hatırlayın powershell de komutlar Verb-Noun mantığında çalışıyordu. Get{Verb}-Process{Noun} )

Ekran görüntüsünüde incelerseniz listelenen komutların noun kısımları hep process şeklinde.

C:\>Get-Command -Noun Proc* komutundaki durum ise Komut’un noun kısmının ilk 4 karakteri Proc sonraki karakterleri herne olursa şeklinde çalışıyor.

C:\>Stop-Process -Name notepad komutu

ismi notepad olan process i durdurmaya yarayan bir komut dizimidir. Bu komutta parametre olarak ismi notepad olan process i kapat şeklinde bir bildirimde bulunulmuştur.

PARAMETRELERİN ESASLARI

Şimdi gelin birlikte komutların parametreleri nasıl keşfedilir, nasıl kullanılır ve parametrelerin özellikleri nelerdir konusuna değinelim.

Önceki derslerimizdende hatırlarsak bir komut hakkında yardım almak için komuttan önce Get-Help yazıp sonra komut adını giriyorduk.

C:\>Get-Help Stop-Computer  Komutunu kullandığımızda komut dizimi bize stop-computer komutu ile ilgili genel bir bilgi veriyordu.

2

C:\>Get-Help Stop-Computer  -Full  Komutunu kullandığımızda daha detaylı bir yardım alırız.  Örneğin parametrelerin özelliklerini görebiliriz.

Snap_2018.02.15 10.37.22_005

C:\>Get-Help Stop-Process -Parameter Name  Komutu ilede stop-process komutuna ait Name parametresinin bilgilerini verir

Snap_2018.02.15 11.04.07_006

Required: Bu parametrenin değerinin true olması bu komutu kullanırken name parametresini belirtmeniz gerektiği anlamına geliyor  aksi takdirde hata verecektir. Mantıklı olarak düşündüğümüzde komuta hangi prosesis kapatması gerektiğini bildirmek gerekiyor

Named: Buda komutla birlikte -name parametresini kesinlikle kullanmamız gerektiği anlamına geliyor bazı komutlarda name argumanını kullanmadanda name belirtebiliyorsunuz.

Örneğin; Get-Process  -name notepad  komutuda Get-Process notepad komutuda aynı çıktıyı verir yani burada name argumanı kullanılması zorunlu değil

Fakat, Stop-Process notepad komutu çalışmazken Stop-Process -name notepad komutu çalışır sebebine gelince buradaki name argumanının kullanılması zorunludur.

Başka bir örnekle devam edelim

C:\>Get-Help Get-Eventlog -Parameter LogName

Snap_2018.02.15 11.59.43_008

Bir önceki komutun position parametresi named iken bu komutun position parametresi 0 yani bu komutta name argumanını kullanmak zorunlu değil. Yani bu komutu Get-Eventlog -logname system diyerek yada Get-Eventlog system diyerekte kullanabilirsiniz. Burada logname parametresine değer olarak system argumanını girdik.

Bir Parametre bir argüman gerektirmezse ne olur? Yani herhangi bir girdi olmayan parametreler, bunlar varsayılan değerlerle çalışırlar. Buna anahtarlamalı parametreler diyoruz.

Bilgisayarınızı yeniden başlatırsanız ne olacağını göstermek istediğinizi varsayalım. Bunun parametresi WhatIf’dir.

C:\>Get-Help Restart-Computer -Parameter WhatIf 

Komutu whatif parametresinin özelliklerini gösterir.

Snap_2018.02.15 14.15.56_010

C:\>Get-Help Restart-Computer -Parameter ComputerName

Komutu ComputerName parametresinin özelliklerini gösterir.

Snap_2018.02.15 14.56.22_012

Çıktılardan WhatIf parametresinin bir değer almadığını buna karşın ComputerName parametresinin değer aldığını görebiliyoruz.

C:\>Restart-Computer -ComputerName Komutunu verdiğimizde doğal olaraktan hata verecektir.

Snap_2018.02.15 17.46.31_014

Sonuç olarak
Tek bir blog makalesinde parametrelerin tüm konularını ele almak mümkün değildir. Aşağıdaki parametreleri kullanarak tüm parametreleri keşfetmeye başlayabilirsiniz:
Get-Help Get-Eventlog -Parameter  *

Şu ana kadar neler öğrendik biraz örneklerle pekiştirelim. Komutlar sizin için çok karmaşık görünüyorsa endişelenmeyin. Henüz bir şeyler yapmadık. sadece birkaç örnek yapacağız.


 

Örnek : Sistem log larından en yeni 5 log görüntüleme

C:\>Get-EventLog -LogName System -Newest 5 -EntryType Error | Format-Table Time,EntryType,Message -AutoSize -Wrap

Snap_2018.02.16 11.29.46_001


 

Örnek: Bir Windows process inin dosya adını görme

C:\>Get-Process notepad -FileVersionInfo

Snap_2018.02.16 11.27.33_001


C:\Temp klasörü içerisindeki .txt uzantılı dosyaları listeleme

C:\>Get-ChildItem -Filter  *.txt -Path C:\Temp

veya  C:\>Get-Childitem C:\Temp *.txt

 

Snap_2018.02.16 11.31.00_002

Snap_2018.02.16 11.32.15_003


Yanlış parametre kullanımı ile ilgili olarakta bir örnek vermek gerekirse

C:\>Get-ChildItem *.txt C:\Temp\  kodu çalışmayacak aşağıdaki hatayı verecektir. Komutun paremetrelerini incelediğinizde filter parametresinin position seçeneğinin 1 olması path parametresinin position değerinin 0 olmasıdır. Bu tam olarak şu anlama geliyor. path parametresi -path zorunluluğu getirmiyor dolayısı ile girilen *.txt filtresi path gibi algılandığı için komut hata veriyor.

Snap_2018.02.16 11.59.12_004

Bir makalemizin daha sonuna geldik. Yorumlarınızı ve sorularınızı bekliyorum…

Kürşat ARI / System Engineer & PowerShell Developer

 

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s