İlginizi Çekebilir
  1. Ana Sayfa
  2. Microsoft PowerShell
  3. Windows PowerShell – Enumerating Object – Bölüm 7

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

– 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 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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

DMOC

 

TAGs : powershell, , Windows powershell, , , , seti, , ,

Yorum Yap

Yazar Hakkında

Sakarya doğumludur. İstanbul Üniversitesi’nde Matematik/Fen ve Teknoloji öğretmenliğini bitirmiştir. Yüksek lisansını Sakarya Üniversitesi Bilgisayar Mühendisliği’nde yapmıştır. Bilişim sektöründe çeşitli firmalarda sistem ve network sorumlusu olarak çalışmıştır. Bazı kurumlarda sistem ve network üzerine uzmanlık eğitimleri vermiştir. Şu anda Netaş şirketinde kurumsal danışman olarak görev yapmaktadır. Microsoft System Center ürünleri, Powershell ve Azure teknolojileri ile ilgilenmektedir. 2016 yılında Microsoft tarafından Cloud and Datacenter alanında MVP unvanını almıştır.

Yorum Yap