Windows PowerShell – Enumerating Object – Bölüm 7

Windows PowerShell – Enumerating Object – Bölüm 7. Makale serisine Enumerating Object başlığı ile devam edeceğim.

Enumeration kelimesi yazılım ile uğraşanların sık sık karşılaştıkları bir kelimedir. Bu kelimenin PowerShell ile kullanımı da aslında çok farklı değil.

Enumeration bir Collection içerisindeki objeler üzerinde her seferde bir tane olacak şekilde belirli bir taşkın yerine getirilmesi işlemidir.

Çoğu zaman PowerShell bunu otomatik olarak yapar ancak PowerShell bu işlemi yapamadığı durumlar da vardır.

Örneğin aşağıdaki komut abc ismindeki tüm Process’leri stop eder.

Get-process -name abc | Stop-Process

Enumeration yapılacak bir işlemin birçok obje üzerinde toplu olarak yapılmasını sağlar.

PowerShell mimarisinde enumeration yapılırken kullanılacak komut ForEach-Object‘tir. Bu komut ForEach ve % olmak üzere iki adet Alias’a sahiptir.

Enumration Syntax’ı da where Syntax’ında olduğu gibi Basic ve Advanced olmak üzere iki şekildedir.

Basic Enumeration Syntax

Basic Syntax’ta tek bir metot çalıştırılabilir yada objenin tek bir Property’sine erişilebilir. Aşağıdaki örnekte belli bir dizindeki dosyalar toplu olarak aşağıdaki şekilde Encrypt edilir.

Get-ChildItem -File | ForEach Encrypt

Get-ChildItem –File | % Encrypt


Resim-1

Tek bir metod yada tek bir Property üzerinde işlem yapılabildiği için Basic Syntax oldukça limitlidir.

Advanced Enumartion Syntax

Basic Syntax’taki gibi bir sınırlama yoktur. Bir Script’in tamamı süslü parantez içerisinde çalıştırılabilir. Çalıştırılan Script sıralı olarak birçok komutu içerebilir.

Get-ChildItem -File | ForEach-Object -Process {$PSItem.Encrypt()}

Advanced Syntax kullanılırken metod isimlerinin sonunda mutlaka parantez kullanılması gerekir (). Yukarıdaki komutta kullanılan –Process parametresi Script bloğunu kabul eder. Script bloğu Pipeline üzerinden gelen tüm objeler için ayrı ayrı olarak çalıştırılır.

Bazen belli taskların belli sayıda tetiklenmesi gerekebilir. Bu durumlarda da foreach-object komutu kullanılır. Örneğin,

1..10 | foreach {Get-Random}


Resim-2

Foreach-Object kullanılan örnek komutlar aşağıdaki gibidir.

İsmi vmi ile başlayan servislerin herbirinin ismini yeşil olarak listelemek için;

Get-Service -Name vmi*| ForEach-Object {Write-Host $_.Name -ForegroundColor Green}


Resim-3

Verilen sayı değerlerinin her birini ikiye bölmek için;

1000, 5698 | ForEach-Object -Process {$PSItem/2}


Resim-4

Verilen String değerlerini, aralarındaki nokta işaretine göre bölüp listelemek için;

“Microsoft.PowerShell.Core”, “Microsoft.PowerShell.Host” | ForEach-Object {$_.Split(“.”)}


Resim-5

Örnekler çoğaltılabilir. Ama temel olarak foreach-object komutunun kullanımı bu şekilde.

Bir sonraki makalede görüşmek üzere.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

DMOC

 

TAGs : powershell, Microsoft powershell, Windows powershell, powershell nedir, powershell kullanimlari, powershell eğitim, powershell eğitim seti, powershell Enumerating Object, Enumerating Object nedir, Enumerating Object powershell

Yazı gezinmesi

Mobil sürümden çık