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.
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-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.