PowerShell

PowerShell Pipeline Kullanımı

PowerShell Nesneleri ve PowerShell Pipeline Kullanımı, PowerShell Piping

PowerShell Pipeline Kullanımı

PowerShell dilini gerçekten anlamak istiyorsanız, PowerShell Pipeline konusunu anlamanız önemlidir. Bu anahtar kavramı anlamak önemlidir, çünkü PowerShell ile yaptığınız her şey Pipeline üzerinde gerçekleşir ve bu nedenle bundan yararlanmak için farklı yollar bulmalısınız. Bu makalede kısa ve basitçe PowerShell Pipeline kullanımı anlatılacaktır. 

Pipeline kelimesi dilimizde “Boru Hattı” anlamını taşır.  Başlamak için, boru hattını bir borunun uzunluğu olarak düşünelim. Komutlar bir uçtan, nesneler diğer uçtan çıkıyor. Borunun içinde ne olduğunu her zaman göremezsiniz, ancak yön verebilirsiniz. PowerShell’de dikey çubuk (|) “pipe” simgesidir. Bu, PowerShell’e bir komutun çıktısını alıp bir sonraki komutu girdi olarak iletmek istediğinizi bildirir.

PowerShell Get-Service komutu çalıştırıldığında, cmdlet bilgisayarınızdaki servisleri göstermek için gerekli nesneleri oluşturur ve görüntüler.

PowerShell Get-Service Komutu
PowerShell Get-Service Komutu

Windows PowerShell dilinde önemli olan, PowerShell’de tüm verilerin düz metin yerine “üç boyutlu” nesneler olarak temsil edilmesidir. Böylece, PowerShell sistem yöneticilerine çok daha fazla güç verir.

Örneğin:

Get-Service –Name spooler | Get-Member
Get-Service -Name spooler | Get-Member
Get-Service -Name spooler | Get-Member

Get-Member komutu çıktısı bize Get-Service komutunun ServiceController nesnelerini döndürdüğünü söylemekle kalmaz, aynı zamanda bu nesnelerin birçok yöntemi (metodu) çalıştırılabilir ve meta verileri (özellikleri) görüntülenebilir/düzenlenebilir. 

Microsoft bünyesinde çalışan PowerShell geliştirme ekibi, LEGO tuğlalarının birbirine bağlandığı şekilde birbirine uyması için birçok temel komut tasarladı. Örneğin servislerle ilgili komutlar:

Get-Command -Noun service | Select-Object -Property name
 
Name
--------------
Get-Service
New-Service
Restart-Service
Resume-Service
Set-Service
Start-Service
Stop-Service
Suspend-Service

PowerShell ile bir servisi durdurmak için aşağıdaki pipeline kullanılabilir:

Get-Service -Name spooler | Stop-Service

PowerShell Pipeline Örneği

Pipeline ile bir ifade kullanmak, tam olarak ihtiyacınız olanı elde edene kadar sonuçları hassaslaştırmak için harika bir tekniktir. Yeni başlayanların, bunu birkaç adıma ayırması tavsiye edilir. 

Aşağıdaki örnekte çalışan tüm işlemlerin Virtual Memory kullanımına göre azalan sırada sıralanması görülebilir:

get-process | sort -Property "VirtualMemorySize" -Descending

Aşağıdaki pipeline eklemesi dönen verileri hedeflenen şekilde biraz daha anlamlandıracaktır:

get-process | sort -Property "VirtualMemorySize" -Descending | Select -first 10

Yine istenilen hedefe dahada yaklaşmak için gereken adımlar eklenmeye devam edilebilir:

get-process | sort -property "VirtualMemorySize" -descending | Select -first 10 | measure-object VirtualMemorySize -sum –average

İki Adımlı Pipeline Örneği

Aşağıdaki ikinci ifade, PowerShell iki adımlı pipeline fikrinin tam olarak anlaşılması için bir örnektir.

dir c:\aktifdizin\*.ps1 -Recurse | measure-object -Property length –sum

Bu ifadenin çalışması bilgisayar hızına bağlı olarak iki saniyeden biraz fazla zaman alabilir. Aşağıdaki şekilde ifadeyi adımlara bölüp performansı biraz daha artırılabilir:

$files = dir c:\aktifdizin\*.ps1 –Recurse
$files | measure-object -Property length -sum

Vakit ayırdığınız için teşekkür ederiz. “Örnek PowerShell Komutları” makalesi de ilginizi çekebilir. PowerShell ile ilgili daha fazla bilgi için Microsoft sitesi ziyaret edilebilir.

Kaynak
PowerShell Cmdlet Nedir?
Etiketler
Daha Fazla Göster

Ahmet Elibol

Üniversite eğitimini Kimya ve İşletme bölümlerinde tamamlayan Ahmet Elibol, yüksek lisans eğitimini de İşletme (Master of Business Administration - MBA) üzerinde tamamlamıştır. 1999 yılından bu yana bilişim sektöründe bulunmaktadır ve şu anda Rönesans Holding şirketinde CIO (Chief Information Officer) pozisyonunda görev yapmaktadır.  Ahmet Elibol, profesyonel kariyerine aldığı pascal ve delphi ile yazılım mühendisliği eğitimiyle başlamıştır. 2004 yılından sonra ilgi ve uzmanlık alanlarını Microsoft Sunucu Sistemleri, Sistem Programlama ve Bilgi Güvenliği konularında güncellemiştir. Yazar 4 yıl kadar bir akademide Sistem Mühendisliği eğitimleri vermiştir. Yazar hobi amaçlı programlama, yapay zeka, makine öğrenmesi, yapay sinir ağları, görüntü işleme ve nesnelerin interneti konularında çalışmaktadır. İngilizce, Rusça dillerini bilen Ahmet Elibol MCT, MCITP, MCTS, MCSE, MCSA vb. uzmanlık sertifikalarına sahiptir ve Bilgisayar Mühendisliği yüksek lisansına devam etmektedir.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu
Kapalı
Kapalı