Windows Powershell – Bölüm 14 – Formatting Part II

By | 31 December 2016

Bir önceki makalemde Formatting komutlarını anlatmıştım. Bu bölümde de formating işlemindeki property’lere ait değerlerin manipüle edilmesi ve çıktıların yönlendirilmesi konusunu ele alacağım.

Bir önceki makale için aşağıdaki linki kullanabilirsiniz.

Bölüm 14 – Formatting Part I

Daha önceki makalemde Select-Object komutu ile listelenen obje property’lerine ait değerlerin n ve e key’lerini kularak nasıl calculated property’ler oluşturulduğunu anlatmıştım.

Ayrıntılı bilgi için aşağıdaki linki kullanabilirsiniz.

Windows Powershell – Bölüm 3 – Select Object – Hash Table and Formatting

Format-Table komutu ile aynı zamanda aşağıdaki key’ler kullanılarak komut çıktıları özelleştirilebilir.

Örnek olarak aşağıdaki komut baz alınırsa;

Get-Process |
Format-Table -Property Name,ID,@{n=’VM(MB)’;
e={$PSItem.VM / 1MB};
{0:N2};
align=’right’} –AutoSize

  1. FormatString yazılan string değerin formatını belirler. N2 virgülden sonra iki basamak olacağını belirtir. (Daha önce select komutu ile bu işlemi {0:N2} ile sağlamıştık)
  2. Align tabloyu verilen Left,Right ve Center değerlerine göre hizalar.
  3. Width tablodaki kolonların maksimum genişliklerini belirler.

Tablo Verilerinin Sıralanması ve Gruplanması (Sorting and Grouping)

Format-Table komutunda –GroupBy isimli oldukça faydalı bir parametre bulunur. Bu parametre kullanılarak objeler istenilen parametrelere göre tablo içerisinde listelenebilir.

Örneğin servisler durumlarına göre gruplanmak istenirse komutu aşağıdaki gibi çalıştırmak gerekir.

Tabi burada durumlar sıralı olmadığı için gruplama işlemini her seferinde tekrarlayabilir. Bunu önlemek için öncelikle sort komutu ile status property’sine göre gruplama yapmak gerekir. Bu sebeple komut aşağıdaki gibi değiştirilmelidir.

-GroupBy parametresi Format-Wide ve Format-List komutları tarafından da desteklenmektedir.

Select ve Format komutları fonksiyonel olarak aynı işi yapıyor gibi görünebilir. Zaten çoğu davranışları da birbirine benzerdir. İkisi de calculated property’leri desteklemektedir.

Ancak burada dikkat edilecek nokta şudur;

  • Select-Object komutu kullanılıp elde edilen objeler pipe edilip bir sonraki komuta aktarılıp, objeler üzerinde sort,export,enumerate ve benzeri komutlar çalıştırılabilir. Yani objeler üzerinde işlem yapılmaya devam edilecek ise select-object komutu kullanılır.
  • Format-Table komutu ise objeler ile işlem yapma son aşamaya geldiğinde, sadece objelerin listelenmesi istenildiğinde kullanılacak komuttur.

Komut Çıktısının Yönlendirilmesi (Redirecting Output)

Format komutu çıktısı diğer komut çıktılarından daha özeldir. Bu sebeple sadece birkaç komut, format komutlarından gelen çıktıyı kabul edebilir.

Örneğin aşağıdaki komut yanlış yazılmış bir komuttur. Genelde bu yazım hatasına sıkça rastlanır. Burada dikkat edilecek durum ConvertTo-HTML komutu format komutunun çıktısını kabul etmez. Komut çalışır ancak kullanılabilir data sunmaz.

Get-Process | Format-Table –Property Name,Status –AutoSize | ConvertTo-HTML | Out-File C:\Services.html

Yukarıdaki çıktıda da göründüğü gibi format komutu convertTo- yada Export- komutları ile pipe edilemez. Bunların yerine format komutu ile kullanılabilecek, çıktıyı yönlendirme komutları aşağıdaki gibidir.

  • Out-Host : Çıktı powershell ekranında görüntülenir. Her pipeline’da default olan davranışı sergiler.
  • Out-File : Komut çıktısı bir dosyaya yönlendirilir.
  • Out-Printer : Komut çıktısı printer’a yönlendirilir.

Out-File ve Out-Printer ile yönlendirilen komutlar, powershell konsolundaki çıktının aynısı olacak şekilde yönlendirilir. Bu komutlar sadece çıktıyı ekranda olduğu biçimiyle alırlar.

Komut aşağıdaki gibi çalıştırıldığında, örnek çıktı aşağıdaki gibi olur.

Bir sonraki makalede görüşmek üzere.

Kaynak: Microsoft DMOC

Fırat

Leave a Reply