19Aug

Geek School: Belajar Memformat, Menyaring dan Membandingkan di PowerShell

click fraud protection

Dalam edisi Geek School ini, kita melihat format, penyaringan dan perbandingan objek di Pipeline.

Pastikan untuk membaca artikel sebelumnya dalam seri:

  • Pelajari Cara Mengotomatiskan Windows dengan PowerShell
  • Belajar Menggunakan Cmdlet di PowerShell
  • Belajar Cara Menggunakan Objek di PowerShell

Dan tetap mengikuti seri lainnya sepanjang minggu.

Default Formatting

Ketika saya pertama kali memulai dengan PowerShell, saya pikir semuanya ajaib, tapi sebenarnya hanya butuh sedikit waktu untuk memahami apa yang terjadi di balik kap mesin. Hal yang sama berlaku untuk sistem pemformatan PowerShell. Sebenarnya, jika Anda menjalankan cmdlet Get-Service, output yang dihasilkan hanya menunjukkan 3 properti: Status, Name dan DisplayName.

Tetapi jika Anda memberi tahu Get-Service kepada Get-Member, Anda akan melihat bahwa objek ServiceController memiliki lebih dari sekedar tiga properti ini, jadi apa yang sedang terjadi?

Jawabannya terletak pada file tersembunyi yang mendefinisikan bagaimana sebagian besar cmdlet built-in menampilkan hasilnya. Untuk mendapatkan pemahaman, ketikkan yang berikut ke dalam shell dan tekan enter.

instagram viewer

notepad C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml

Jika kita menggunakan fungsi Findepad's Find, kita dapat dengan cepat melompati bagian yang memerinci output dari cmdlet Get-Service dengan mencari ServiceControllermengetik.

Tiba-tiba, Anda dapat melihat bahwa di balik kapak PowerShell memformat objek apa pun di Pipeline yang berada dalam tipe ServiceController dan membuat tabel dengan tiga kolom: Status, Name, dan DisplayName. Tapi bagaimana jika tipe yang Anda hadapi tidak memiliki entri dalam file itu, atau file format lainnya dalam hal ini? Baiklah, sebenarnya cukup sederhana. Jika objek yang keluar dari pipa memiliki 5 atau lebih properti, PowerShell menampilkan semua properti objek dalam daftar;Jika memiliki kurang dari 5 properti, itu akan menampilkannya dalam sebuah tabel.

Memformat Data Anda

Jika Anda tidak menyukai format default dari suatu objek atau tipe, Anda dapat memutar format Anda sendiri. Ada tiga cmdlet yang perlu Anda ketahui untuk melakukan ini. Format

  • Format
  • Format-Table
  • Format-Wide

Format-Wide hanya mengambil koleksi objek dan menampilkan satu properti dari setiap objek. Secara default, akan mencari properti nama;Jika objek Anda tidak berisi properti nama, itu akan menggunakan properti pertama objek setelah properti diurutkan menurut abjad.

Get-Service |Format-Wide

Seperti yang Anda lihat, ini juga default untuk dua kolom, meskipun Anda dapat menentukan properti mana yang ingin Anda gunakan, serta berapa banyak kolom yang ingin ditampilkan.

Get-Service |Format-Wide -Property DisplayName -Column 6

Jika ada sesuatu yang diformat sebagai tabel secara default, Anda selalu dapat beralih ke tampilan daftar dengan menggunakan cmdlet Format-List. Mari kita lihat output dari cmdlet Get-Process.

Tampilan tabel ini benar-benar sesuai dengan jenis informasi ini dengan sangat baik, namun mari kita berpura-pura ingin melihatnya dalam bentuk daftar. Yang harus kita lakukan hanyalah menyalurkannya ke Format-List .

Get-Process |Format-List

Seperti yang Anda lihat, hanya ada empat item yang ditampilkan dalam daftar secara default. Untuk melihat semua properti objek, Anda bisa menggunakan karakter wildcard.

Get-Process |Format-List -Property *

Sebagai alternatif, Anda dapat memilih hanya properti yang Anda inginkan.

Get-Process |Format-List -Property name, id

Format-Table, di sisi lain, mengambil data dan mengubahnya menjadi sebuah tabel. Karena data kami dari Get-Process sudah dalam bentuk tabel, kita bisa menggunakannya untuk dengan mudah memilih properti yang ingin ditampilkan di tabel. Saya menggunakan parameter AutoSize untuk membuat semua data sesuai ke satu layar.

Get-Process |Format-Table name, id -AutoSize

Menyaring dan Membandingkan

Salah satu hal terbaik tentang penggunaan pipa berbasis objek adalah Anda dapat memfilter objek dari pipa pada tahap apapun dengan menggunakan cmdlet Where-Object.

Get-Service |Where-Object{ $ _ Status -eq "Running"}

Menggunakan di mana objek sebenarnya sangat sederhana.$ _ mewakili objek pipa saat ini, dari mana Anda dapat memilih properti yang ingin Anda filter. Ini, hanya menjaga objek dimana properti Status sama dengan Running. Ada beberapa operator perbandingan yang dapat Anda gunakan dalam blok skrip penyaringan:

  • eq( Equal To)
  • neq( Tidak Sama dengan)
  • gt( Greater Than)
  • ge( Lebih Besar dari atau Sama dengan)
  • lt( Less Than)
  • le( kurang dari atau sama dengan)
  • seperti( Wildcard String Match)

Daftar lengkap dan lebih banyak informasi dapat dilihat di file bantuan konseptual about_comparison, namun memerlukan beberapa waktu untuk membiasakan diri dengan sintaks Where-Obeject. Itu saja untuk saat ini!