Selamlar arkadaşlar bu makalemde sizlere Parametreleri anlatmayacağım.
PowerShell’de parametreler CMDLET’leri özelleştirerek daha ayrıntılı kullanılmasını sağlamaktadırlar.
Örnek olarak parametre göstermemiz gerekirse Console üzerinde Get-Service komutunu çalıştırın.
Burada Status, Name ve DisplayName alanlarının her biri bir parametredir ve Get-Service ile gelen en yaygın parametrelerdir.
Status : Servisin
çalışıp çalışmadığını yani durumunu
belirtir.
Name : Sistemde bulunan servisin adını.
DisplayName : Arayüzlerde de görünen adını belirtir.
Bu CMDLET’in parametreleri ile örnek bir sorguyu aşağıdaki gibi oluşturabilirsiniz.
Name alanında ALG olanları listele dediğimizde karşımıza bu sonuç çıkacaktır. (Komut İsmi) Get-Service (Parametre Adı) –Name (Parametre Değeri) ALG
PowerShell üzerinde Parameters özelliği ikiye ayrılmaktadır.
Named Parameters : Yazacağınız kod’un özelliklerinde Position değeri Named olan Parametreler kod yazılırken yazılarak değerleri verilmesi gerekmektedir.
Positional Parameters : Yazacağınız kod’un özelliklerinde Position değeri 0 (Sıfır) yazması durumunda ise Parametreyi yazmadan doğrudan Parametre değerini yazabilirsiniz.
Peki bu CMDLET’lerin Parametrelerinin Named mi yoksa Positional mı olduğunu nasıl göreceğiz?
Bunun için Get-Help komutundan yardım alacağız. Yukarıda da belirtiğim gibi Get-Help Get-Service –Full komutu yardımıyla Get-Service komutunun –Full olarak özelliklerini listeleyeceğiz. Daha sonra PARAMETERS alanındaki özellikleri inceleyeceğiz.
Parameter olarak –InputObject ve –Name seçtim. Gördüğünüz gibi ilk parametremizin Position alanın yanında Named yazarken diğer parametremizin Position alanında 0 (Sıfır) yazmaktadır. Ayrımı bu şekilde yapabilirsiniz.
Örnek olarak vermemiz gerekirse Get-Service –Named Spooler olarak yazdığımız kullanım şekli Named Parameters’a örnektir. Get-Service Spooler olarak yazdığımız kod ise Positional Parameters’a bir örnektir. Yukarıda da gördüğünüz gibi Positional olan parametre Named’miş gibide kullanılabilir ancak tam tersi bir durum söz konusu değildir.
Ayrıca –Name alanın yanında girilecek değer <String[]> olarak verilmiştir. Burada bulunan [] (Köşeli Parantez)’in anlamı buraya bir Dizi girebileceğinizdir.
Örnek ile açıklamam gerekirse Get-Service –Name RemoteAccess,Spooler,PolicyAgent şeklinde Dizi bir değer belirtebileceğimiz gibi, Get-Content yardımı ile dışarıdan veri çekerekte bunu yapabiliriz. Veriyi çekebilmek için C:\Name.txt adından bir Text dosyası oluşturdum ve yukarıdaki gibi Servis adlarımı girdim. Ardından Get-Service (Get-Content C:\Name.txt) yazarak çalıştırdım. Sonuç yukarıdaki ile aynı olacaktır.
Positional ve Named Parameters’a bir örneğide Get-EventLog ile yapalım :
Get-EventLog komutu sayesinde Windows Loglarını görebiliriz.
Yukarıdaki resimde de görmüş olduğunuz üzere –InstanceId ve –LogName’in Position değerli 1 ve 0 (Sıfır)’dır. Bunun anlamı Positional Parameters olarak bu kodu kullanacaksanız ilk olarak 0 (Sıfır) değerinde bulunan parametreyi yazmalı ve ardından 1 değerine sahip olan parametreyi yazmalısınız. Bunu aşağıda Named ve Positional olmak üzere iki farklı örnek ile size yazayım.
Yukarıda görmüş olduğunuz örnek Named Parameters kullanılarak yapılmıştır.
Yukarıda görmüş olduğunuz kodlar ise Positional Parameters’dır. Sırası ile yazmanız durumunda herhangi bir sorun olmadan kodlarınız çalışacaktır.
NOT : Ayrıca Get-EventLog özelliğinde bulunan –ComputerName parametresi ile uzak bir sunucudan veri çekmek istemeniz durumunda ya sunucunun Firewall’u DevreDışı bırakılmalı ya da Remote EventLog Management, Firewall kuralına Inbound olarak izin verilmesi gerekmektedir.
Yararlı olması dileğiyle bir sonraki makalemde görüşmek üzere kolay gelsin.