1. Ana Sayfa
  2. Microsoft PowerShell
  3. PowerShell – Diziler Hakkında Bilmek İstediğiniz Her Şey – Bölüm 2

PowerShell – Diziler Hakkında Bilmek İstediğiniz Her Şey – Bölüm 2

122618_1204_PowershellD6.png

Serimizin ilk yazısında, içerisinden Array kullanımı, oluşturma ve ne şekilde oluşturabileceğimiz üzerine değindik. Şimdi kaldığımız yerden hız kesmeden devam edelim.

Array içerisindeki eleman sayısı bulmak

Oluşturduğumuz array içerisinde kaç eleman var olduğunu merak ediyorsanız bunun için ‘Count’ niteliğini çağırarak değeri bulabilirsiniz.

Resim-1

Görüldüğü üzere sadece tanımladığım Array çağırıp onun özelliklerine indikten sonra, kaç elema olduğunu gördüm. Noktaya bastığınız birçok nitelik ve methodlar karşınıza çıkacaktır. Tek tek ne olduğuna Microsoft Web sitesinden bakabilirsiniz.

Array içerisindeki elemanın index değerini bulmak

İhtiyaç üzerine oluşabilecek ve hazır method olarak bizlere sunulan ‘IndexOf’ methoduna bir göz gezdirelim. Bu method sayesinde büyük bir Array – Koleksiyonunuz olsun ve içerisinde ortalama bin adet değer olduğunu düşünün. Bunun içerisinden belirlediğiniz değerin Index değerini öğrenmek istiyorsunuz, bunun için IndexOf sizlere yardımcı olacaktır. Neden bu değeri öğrenmeyelim diye düşünür iseniz, bu değer sayesinde yapmak istediğiniz bir döngü işleminde bu değere gelince belirli bir aksiyon aldırabilirsiniz. Örneğin , ‘for döngüsü’

Resim-2

Üsteki ekran görüntüsü içerisinde gösterdiğim üzere, Array içerisindeki istediğim değerin ‘Index’ değerini buldum. Değeri alıp şimdi ise ‘Length’ adındaki niteliğini öğrenelim. Basit haliyle ‘Length’ ilgili değerin uzunluğunu bize verir. Bunu biraz daha açmak gerekir ise, bu uzunlukta nedir ne işime yarayaracak dediğinizi duyar gibiyim, mesela Array’iniz bir Cep telefonu numaralarından oluştuğunu varsayın ve bu numaraların uzunluklarına göre eksik olup olmadığını anlayabilirsiniz.

Resim-3

Array elemanlarını Pipeline ile birlikte kullanın.

Pipeline, PowerShell içerisinde sıklıkla kullanılabilen bir yöntem olmakla birlikte, genelde komutların yazımını karmaşıklaştıran bir metot olarak görülmektedir. Aslında hiçte böyle değil. Bu kısım ile birlikte Array – koleksiyonlarınızı Pipeline içerisinde kullanımının ne kadar basit olduğu ve ne kadar esnek hale getirdiği incelenecektir. Öncelikle Pipeline konusunu anlamamız lazım, Neden Pipeline kullanmaya ihtiyaç duyarız? En basit haliyle; Bir üretim yapan fabrika hayal edin, bu fabrikanın her bölümünde farklı operasyonel görevlerin gerçekleştirildiği bölümler ve bu bölümlerin içerisinde görevleri gerçekleştiren makineler bulunmaktadır. Bu fabrikada üretilen ürünün tüm üretim süreçleri tamamlandığında, başlangıçta bir hammadde olarak fabrikaya girmesine rağmen, fabrikadan çıktığında üzerinde birçok işlem gerçekleşmiş ve kullanıma veya tüketime hazır vaziyettedir. Fabrika içerisindeki “Pipeline” yapısında bir hammadde olarak giren ürün, çeşitli aşamalardan geçerek ve en son kutulanarak tüketime hazır hale getirilir. Pipeline başlangıcındaki otomobilin iskelet halini hayal edin, Pipeline sonucunda elde edilen son üründe yine bir otomobildir. Ancak fabrika tarafından belirlenen kurallar, güvenlik poliçeleri, dünya standartları vb. süreçler dâhilinde değişiklikleri gerçekleştirilmiş ve son tahlilde elde edilen ürün tam da müşterinin istediği hale getirilmiştir.

Array ve Foreach Kullanımı

Özetle Array içerisindeki tüm elemanlar üzerinde işlem yapılmasının en temel ve basit yolu Pipeline kullanmaktır. Bir diziyi bir Pipeline sürecinden geçirdiğinizde, dizinin içindeki her öğe için ayrı ayrı işlenir ve belirlediğiniz işleme göre aksiyon alınır.

Resim-4

Yukarıda gerçekleştiren örnek, Array içerisindeki her elaman için bir işlem yapıldığını anlatmaktadır. Bu işlem tamamen sizin yazdığınız kod bloğunuz ile ilişkilidir. Bizim kod bloğumuz içerisinde her elemanın başına bir değer ekledik. Daha fazla ufkunuzu açmak için şu şekilde bir örnek verebiliriz. Powershell içerisinde Invoke-Command cmdlet var, bu command-let sayesinde uzaktaki Windows veya Linux cihazlara bir takım işlemler yaptırtabilirsiniz. İşte bu kısımda Array içerisinde elemanların hepsinin bir bilgisayar adı olduğunu düşünün ve Foreach-Object ( Iteration – yineleme – döngü ) sayesinde bu komutu Array içerisindeki her eleman için çalıştırabilirsiniz. Tamamen hayal gücünüz ile sınırlı!

Bir başka örnek ile devam edelim, Foreach-Object Pipeline dışında bir kullanım şeklide var. Bunu bir göz gezidrelim.

Resim-5

Kullanım biçiminde de görüldüğü gibi bir koleksiyon içerisinde bulunan tüm öğelerde ilgili kod bloğunu çalıştırabilme imkânına sahip olunmaktadır. Kullanım biçimini özetlemek gerekirse, Foreach ($<variable> in $<array>) ve daha sonra kod bloğunuz gelmektedir.

Array ile For Kullanımı

For döngüsü kullanımındaki temel amaç herhangi bir kod bloğunun belirlenen kez çalıştırılabilmesidir. Kullanım biçimini anlamak gerekirse, her programlama dilinde olduğu gibi aynı gözlenmektedir. For (baslangic; kıstas; tekrar). Bunların neler olduğunu önce bir anlayalım.

Belirtmiş olduğumuz for söz diziminde ilk parantez içerisinde 3 farklı opsiyonel parametre tanımlaması yaptıktan sonra köşeli parantez ile ilgili kod bloğu çalıştırılabilir. Bu opsiyonel parametreler;

Baslangic: Virgül ile ayrılmış komutlar zinciridir ve döngü başlangıcından önce çalışırlar. Daha çok döngü öncesinde değişken atamaları için kullanılır.
Kriter(Kıstas): Her döngü çalışmasında PowerShell tarafından çalıştırılan kıstastır ve konsola True / False Boolean değerlerini döndürür. Eğer kıstas True değerini döndürürse ilgili kod bloğu çalıştırılacaktır.
Repeat(Tekrar): Virgül ile ayrılmış komutlar zinciridir ve her döngüde çalışırlar.

Resim-6

Yaptığımız örnekte yukarıda bulunan en basit haliyle For Döngüsünü anlamaya çalıştık. Aslında çok daha fazla detayları var fakat konudan çok sapmak istemediğim için meraklıları lütfen Powershell – Döngüler adlı konuyu araştırıp öğrenmesini tavsiye ederim. Herhangi bir programlama geçmişiniz var ise zaten bunlara hâkim olacaksınız. Süreci anlatmak adını aşağıdaki adımları takip etmekte fayda var.

For döngüsündeki ilk parantezde, tüm parametreler noktalı virgül (;) ile ayrılıyor.

  • İlk parametre ile $int = 0 değişkenine başlangıç değeri atanıyor.
  • İkinci parametre ile değişkenin döngü sonucunda ulaşacağı değer belirtiliyor. Bu değere ulaşıldığında döngünün sonuna ulaşılacağı bilmeniz gerekiyor. Bu kısımda örnekte mantıksal bir karşılaştırmak yaptık. ‘$myFirstArray.Count’ değeri size neyi geri döndürdüğünü tahmin etmemeniz hiçte zor değil.
  • Son parametrede ise değişkenin artış değeri belirtiliyor.

Özetle For, PowerShell içerisinde bulunan en temel döngü biçimidir. Diğer döngü tipleri ile gerçekleştirilebilen karmaşık senaryolar sebebi ile sıklıkla başvurulmamaktadır. Array içinde sık sık başvuracağınız bir nokta olacak, lütfen bunu tekrar tekrar deneyin ve çalışın.

Array içerisinde Object kullanımı

Şimdiye kadar hep Array içerisinde bir değer atamayı ve barındırmayı gördük. Bu değerler bildiğiniz üzere, integer, string, boolean olarak ifade edebiliriz. Ancak Array alışkın olduğunuz veri tipleri dışında Object ( Nesne ) barındırma şansınız var. Powershell içerisinde Object kelimesinin tam olarak ne anlama geldiğine şu sayfadan inceleyebilirsiniz. Bildiğiniz gibi diğer metin-tabanlı shell sistemlerinin aksine, Powershell temel olarak zengin nesne yönetimine ve tüm .NET ortamının içeriğine sahiptir. Bununla beraber uzun zamandır ise, Powershell 6.0 ile tüm platformlarda desteği var ve bu inanılmaz bir keyif. Herneyse konuyu çok dağtmayalım, Array içerisinde nasıl nesne barındırabiliriz onun üzerinden geçelim.

Resim-7

Yukarıdaki kod bloğu içerisinde en temel haliyle, Array içerisinde nesne tanımladık. Nesnemizin, bir Property Name ve PropertyValue değerleri bulunmaktadır. Nesne konusuna gelen taleplere göre başka bir yazımız içerisinde ele alabiliriz. Onlarda en az bu konu kadar önem arz ediyor. Oluşturduğumuz nesnelerimizin, değerlini gözlenleyebiliriz. Şimdi ise Index değeri ‘sıfır'(0) olan değeri çağıralım ve birkaç işlem yapalım.

Resim-8

Array içerisindeki ilk nesnemiz olan değerin niteliklerini yani propertylerini görebilmekteyiz. Array tipindeki değişkeni çağırdığım zaman tüm detayları ile karşıma yukarıdaki gibi çıkmaktadır. Çok basit haliyle güncelleme işlememizi hemen gerçekleştirelim. Array içerisinde ilk elemanımız olan ArticleNumber ‘154’ olarak güncelleyelim.

Resim-9

Yine farkılı bir güncelleme işlemini anlattık. Array içerisinde dikkat edilmesi gerekenler ve bize sağladıkları faydaları ve kullanım senaryolarına değindik. Bir sonraki yazımızda artık biraz daha mantıksal operatorler üzerinden işlemler gerçekleştirelim.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

TAGs:, powershell, , , , ( Array )

Yorum Yap

Yazar Hakkında

Hasan Güral, Profesyonel olarak 5 senedir bilişim sektöründe çalışmaktadır. Üniversite eğitimiyle birlikte sektörde sistem uzmanı pozisyonunda görev yaptı. Halen Bilge Adam Bilgi Teknolojileri Akademisi'nde Danışman olarak çalışmaktadır. Microsoft ürün ailesi ve network altyapıları ile ilgilenmektedir.

Yorum Yap