0

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

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

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.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir