Geek School Learning Memformat, Memfilter, dan Membandingkan di PowerShell
Dalam edisi Geek School ini, kita melihat memformat, memfilter, dan membandingkan objek di Pipeline.
Pastikan untuk membaca artikel sebelumnya dalam seri ini:
- Pelajari Cara Mengotomatiskan Windows dengan PowerShell
- Belajar Menggunakan Cmdlet di PowerShell
- Mempelajari Cara Menggunakan Objek di PowerShell
Dan tetap disini selama sisa seri sepanjang minggu.
Pemformatan Default
Ketika saya pertama kali mulai dengan PowerShell, saya pikir semuanya ajaib, tetapi sebenarnya hanya butuh sedikit waktu untuk memahami apa yang terjadi di balik tenda. 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 mem-pipe Get-Service ke Get-Member, Anda melihat bahwa objek ServiceController memiliki lebih dari hanya tiga properti ini, jadi apa yang terjadi?
Jawabannya ada di dalam file tersembunyi yang menentukan bagaimana sebagian besar cmdlet built-in menampilkan outputnya. Untuk mendapatkan pemahaman, ketikkan yang berikut ke dalam 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 tipe ServiceController.
Tiba-tiba, Anda dapat melihat bahwa di bawah kap PowerShell memformat objek di Pipeline yang merupakan tipe ServiceController dan membuat tabel dengan tiga kolom: Status, Nama, dan DisplayName. Tetapi bagaimana jika tipe yang Anda hadapi tidak memiliki entri dalam file itu, atau file format lain apa pun? Kalau begitu, sebenarnya cukup sederhana. Jika objek yang keluar dari pipa memiliki 5 properti atau lebih, PowerShell menampilkan semua properti objek dalam daftar; jika memiliki kurang dari 5 properti, ini menampilkannya dalam sebuah tabel.
Memformat Data Anda
Jika Anda tidak puas dengan pemformatan default suatu objek atau tipe, Anda bisa menggulung pemformatan Anda sendiri. Ada tiga cmdlet yang perlu Anda ketahui untuk melakukan ini.
- Format-Daftar
- Format-Tabel
- Format-Lebar
Format-Lebar cukup mengambil koleksi objek dan menampilkan properti tunggal dari setiap objek. Secara default, ini akan mencari properti nama; jika objek Anda tidak mengandung properti nama, itu akan menggunakan properti pertama dari objek setelah properti telah 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-Lebar -Nama Properti Tampilan -Kolom 6
Jika sesuatu diformat sebagai tabel secara default, Anda selalu dapat mengubahnya ke tampilan daftar dengan menggunakan cmdlet Format-List. Mari kita lihat output dari cmdlet Get-Process.
Tampilan tabel ini sebenarnya sangat cocok dengan informasi semacam ini, tetapi mari kita berpura-pura ingin melihatnya dalam bentuk daftar. Yang harus kita lakukan hanyalah menyalurkannya ke pipa 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 -Properti *
Atau, Anda dapat memilih hanya properti yang Anda inginkan.
Dapatkan-Proses | Format-Daftar -Nama properti, id
Format-Tabel, 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 di tabel. Saya menggunakan parameter AutoSize untuk membuat semua data masuk ke satu layar.
Dapatkan-Proses | Format-nama Tabel, id -AutoSize
Memfilter dan Membandingkan
Salah satu hal terbaik tentang menggunakan pipeline berbasis objek adalah Anda dapat menyaring objek dari pipeline pada tahap apa pun menggunakan cmdlet Where-Object.
Dapatkan Layanan | Where-Object $ _. Status -eq “Running”
Menggunakan objek mana sebenarnya sangat sederhana. $ _ mewakili objek pipa saat ini, dari mana 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 filter:
- eq (Setara dengan)
- neq (Tidak Sama Dengan)
- gt (Greater Than)
- ge (Greater Than or Equal To)
- itu (kurang dari)
- le (Kurang Dari atau Setara Dengan)
- seperti (Wildcard String Match)
Daftar lengkap dan informasi lebih lanjut dapat dilihat di file bantuan konseptual about_comparison, namun butuh waktu untuk membiasakan diri dengan sintaksis Where-Obeject. Itu saja untuk saat ini!