If-Koubou

Geek School: Belajar Memformat, Memfilter, dan Membandingkan di PowerShell

Geek School: Belajar Memformat, Memfilter, dan Membandingkan di PowerShell (Bagaimana caranya)

Dalam edisi Geek School ini, kami melihat pemformatan, penyaringan, dan pembandingan objek di Pipeline.

Pastikan untuk membaca artikel sebelumnya dalam rangkaian:

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

Dan nantikan terus sisa serial ini sepanjang minggu.

Pemformatan Default

Ketika saya pertama kali memulai dengan PowerShell, saya pikir semuanya adalah sihir, tetapi kebenarannya hanya membutuhkan sedikit waktu untuk memahami apa yang sedang terjadi di bawah kap mesin. Hal yang sama berlaku untuk sistem pemformatan PowerShell. Bahkan, jika Anda menjalankan cmdlet Get-Service, output yang dihasilkan hanya menampilkan 3 properti: Status, Nama dan DisplayName.

Tetapi jika Anda mendapatkan Get-Service untuk Get-Member, Anda melihat bahwa objek ServiceController memiliki lebih banyak dari hanya tiga properti ini, jadi apa yang terjadi?

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

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

Jika kita menggunakan fungsi Find notepad, kita dapat dengan cepat melompat ke bagian yang merinci output dari cmdlet Get-Service dengan mencari jenis ServiceController.

Tiba-tiba, Anda dapat melihat bahwa di bawah kap mesin PowerShell sedang memformat objek apa pun di Pipeline yang merupakan jenis ServiceController dan membuat tabel dengan tiga kolom: Status, Nama, dan DisplayName. Tetapi bagaimana jika jenis yang Anda hadapi tidak memiliki entri di file itu, atau file format lain dalam hal ini? Kalau begitu, itu 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, ini akan menampilkannya dalam tabel.

Memformat Data Anda

Jika Anda tidak puas dengan pemformatan default suatu objek atau jenis, Anda dapat menggulir pemformatan sendiri. Ada tiga cmdlet yang perlu Anda ketahui untuk melakukan ini.

  • Format-Daftar
  • Format-Tabel
  • Format-Lebar

Format-Lebar hanya mengambil kumpulan objek dan menampilkan satu properti dari setiap objek. Secara default, ia akan mencari properti nama; jika objek Anda tidak mengandung properti nama, ia akan menggunakan properti pertama objek setelah properti diurutkan berdasarkan abjad.

Dapatkan-Layanan | Format-Lebar

Seperti yang Anda lihat, itu juga default ke dua kolom, meskipun Anda dapat menentukan properti mana yang ingin Anda gunakan, serta berapa banyak kolom yang ingin Anda tampilkan.

Dapatkan-Layanan | Format-Wide -Property DisplayName -Column 6

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

Tampilan tabular ini benar-benar sesuai dengan jenis informasi ini dengan sangat baik, tetapi mari kita berpura-pura kita ingin melihatnya dalam bentuk daftar. Yang harus kita lakukan hanyalah menyalurkannya Format-Daftar.

Dapatkan-Proses | Format-Daftar

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

Dapatkan-Proses | Format-Daftar -Property *

Atau, Anda dapat memilih hanya properti yang Anda inginkan.

Dapatkan-Proses | Format-Daftar -Properti nama, id

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

Dapatkan-Proses | Format-Nama tabel, id -AutoSize

Menyaring dan Membandingkan

Salah satu hal terbaik tentang penggunaan pipeline berbasis objek adalah Anda dapat memfilter objek keluar dari pipeline pada setiap tahap menggunakan cmdlet Di Mana-Obyek.

Dapatkan-Layanan | Di mana-Obyek $ _. Status -eq "Menjalankan"

Menggunakan dimana objek sebenarnya sangat sederhana. $ _ mewakili objek pipeline saat ini, dari situ Anda dapat memilih properti yang ingin Anda filter. Di sini, hanya menyimpan objek di mana properti Status sama dengan Menjalankan. Ada beberapa operator perbandingan yang dapat Anda gunakan di blok skrip penyaringan:

  • eq (Setara dengan)
  • neq (Tidak Sama Dengan)
  • gt (lebih besar dari)
  • ge (Lebih Besar Dari atau Sama Dengan)
  • lt (kurang dari)
  • le (Kurang Dari atau Sama Dengan)
  • seperti (Wildcard String Match)

Daftar lengkap dan informasi lebih lanjut dapat dilihat di file bantuan konseptual about_comparison, namun perlu waktu untuk membiasakan diri dengan sintaks dimana-Obeject. Itu saja untuk kali ini!