Geek School: Mempelajari Memformat, Menapis dan Membandingkan dalam PowerShell

Isi kandungan:

Geek School: Mempelajari Memformat, Menapis dan Membandingkan dalam PowerShell
Geek School: Mempelajari Memformat, Menapis dan Membandingkan dalam PowerShell
Anonim

Tetapi jika anda menyalurkan Dapatkan-Perkhidmatan kepada Dapatkan-Ahli, anda melihat bahawa objek ServiceController mempunyai lebih banyak daripada hanya tiga sifat ini, jadi apa yang sedang berlaku?

Imej
Imej

Jawapannya terletak dalam fail tersembunyi yang mentakrifkan cara kebanyakan cmdlet terbina dalam memaparkan outputnya. Untuk mendapatkan pemahaman, taip yang berikut ke dalam shell dan tekan enter.

Jika kami menggunakan fungsi Cari pada notepad, kami boleh melangkau ke bahagian yang memperincikan output cmdlet Get-Service dengan cepat dengan mencari jenis ServiceController.

Imej
Imej

Tiba-tiba, anda dapat melihat bahawa di bawah tudung PowerShell sedang memformat mana-mana objek dalam Pipeline yang daripada jenis ServiceController dan mencipta jadual dengan tiga lajur: Status, Nama dan Nama Paparan. Tetapi bagaimana jika jenis yang anda hadapi tidak mempunyai entri dalam fail itu, atau mana-mana fail format lain untuk perkara itu? Kalau begitu, ia agak mudah sebenarnya. Jika objek yang keluar dari saluran paip mempunyai 5 atau lebih sifat, PowerShell memaparkan semua sifat objek dalam senarai; jika ia mempunyai kurang daripada 5 sifat, ia memaparkannya dalam jadual.

Memformat Data Anda

Jika anda tidak berpuas hati dengan pemformatan lalai objek atau jenis, anda boleh melancarkan pemformatan anda sendiri. Terdapat tiga cmdlet yang anda perlu tahu untuk melakukan ini.

  • Format-Senarai
  • Format-Jadual
  • Format-Lebar
Imej
Imej

Format-Wide hanya mengambil koleksi objek dan memaparkan satu sifat bagi setiap objek. Secara lalai, ia akan mencari harta nama; jika objek anda tidak mengandungi sifat nama, ia akan menggunakan sifat pertama objek setelah sifat itu diisih mengikut abjad.

Imej
Imej

Seperti yang anda lihat, lajur ini juga lalai kepada dua lajur, walaupun anda boleh menentukan kedua-dua sifat yang anda mahu gunakan, serta bilangan lajur yang anda mahu dipaparkan.

Imej
Imej

Jika sesuatu diformatkan sebagai jadual secara lalai, anda sentiasa boleh menukarnya kepada paparan senarai dengan menggunakan cmdlet Senarai-Format. Mari lihat pada output cmdlet Get-Process.

Imej
Imej

Paparan jadual ini sebenarnya sesuai dengan maklumat jenis ini, tetapi mari kita berpura-pura mahu melihatnya dalam bentuk senarai. Apa yang perlu kita lakukan ialah paipkannya ke Format-Senarai.

Imej
Imej

Seperti yang anda lihat, terdapat hanya empat item yang dipaparkan dalam senarai secara lalai. Untuk melihat semua sifat objek, anda boleh menggunakan aksara kad bebas.

Imej
Imej

Sebagai alternatif, anda boleh memilih hanya sifat yang anda mahukan.

Imej
Imej

Format-Jadual,sebaliknya, mengambil data dan mengubahnya menjadi jadual. Memandangkan data kami daripada Get-Process sudah dalam bentuk jadual, kami boleh menggunakannya untuk memilih sifat yang kami mahu dipaparkan dalam jadual dengan mudah. Saya menggunakan parameter AutoSize untuk menjadikan semua data muat pada satu skrin.

Imej
Imej

Menapis dan Membandingkan

Salah satu perkara terbaik tentang menggunakan saluran paip berasaskan objek ialah anda boleh menapis objek keluar daripada saluran paip pada mana-mana peringkat menggunakan cmdlet Where-Object.

Imej
Imej

Menggunakan di mana objek sebenarnya sangat mudah. $_ mewakili objek saluran paip semasa, yang mana anda boleh memilih sifat yang anda ingin tapis. Di sini, were hanya menyimpan objek di mana sifat Status sama dengan Running. Terdapat beberapa operator perbandingan yang boleh anda gunakan dalam blok skrip penapisan:

  • eq (Sama Dengan)
  • neq (Tidak Sama Dengan)
  • gt (Lebih Besar Daripada)
  • ge (Lebih Besar Daripada atau Sama Dengan)
  • lt (Kurang Daripada)
  • le (Kurang Daripada atau Sama Dengan)
  • suka (Padanan Rentetan Kad Liar)

Senarai penuh dan maklumat lanjut boleh dilihat dalam fail bantuan konseptual about_comparison, namun ia mengambil sedikit masa untuk membiasakan diri dengan sintaks Where-Obeject. Itu sahaja untuk kali ini!

Topik popular.