Menggunakan perintah Format untuk mengubah tampilan output

PowerShell memiliki sekumpulan cmdlet yang memungkinkan Anda mengontrol bagaimana properti ditampilkan untuk objek tertentu. Nama semua cmdlet dimulai dengan kata kerja Format. Mereka memungkinkan Anda memilih properti mana yang ingin Anda tampilkan.

Get-Command -Verb Format -Module Microsoft.PowerShell.Utility
CommandType     Name               Version    Source
-----------     ----               -------    ------
Cmdlet          Format-Custom      6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Hex         6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-List        6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Table       6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Wide        6.1.0.0    Microsoft.PowerShell.Utility

Artikel ini menjelaskan Format-Widecmdlet , Format-List, dan Format-Table .

Setiap jenis objek di PowerShell memiliki properti default yang digunakan saat Anda tidak memilih properti untuk ditampilkan. Setiap cmdlet menggunakan parameter Properti yang sama untuk menentukan properti mana yang ingin Anda tampilkan. Karena Format-Wide hanya menampilkan satu properti, parameter Propertinyahanya mengambil satu nilai, tetapi parameter properti dan Format-ListFormat-Table menerima daftar nama properti.

Dalam contoh ini, output Get-Process default cmdlet menunjukkan bahwa kami memiliki dua instans Internet Explorer yang berjalan.

Get-Process -Name iexplore

Format default untuk objek Proses menampilkan properti yang diperlihatkan di sini:

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
     32    25.52      10.25      13.11   12808   1 iexplore
     52    11.46      26.46       3.55   21748   1 iexplore

Menggunakan Format-Wide untuk output item tunggal

Format-Wide Cmdlet, secara default, hanya menampilkan properti default objek. Informasi yang terkait dengan setiap objek ditampilkan dalam satu kolom:

Get-Command -Verb Format | Format-Wide
Format-Custom          Format-Hex
Format-List            Format-Table
Format-Wide

Anda juga dapat menentukan properti non-default:

Get-Command -Verb Format | Format-Wide -Property Noun
Custom                 Hex
List                   Table
Wide

Mengontrol tampilan Format-Lebar dengan kolom

Format-Wide Dengan cmdlet, Anda hanya dapat menampilkan satu properti pada satu waktu. Ini membuatnya berguna untuk menampilkan daftar besar dalam beberapa kolom.

Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom                 Hex                  List
Table                  Wide

Menggunakan Format-Daftar untuk tampilan daftar

Format-List Cmdlet menampilkan objek dalam bentuk daftar, dengan setiap properti berlabel dan ditampilkan pada baris terpisah:

Get-Process -Name iexplore | Format-List
Id      : 12808
Handles : 578
CPU     : 13.140625
SI      : 1
Name    : iexplore

Id      : 21748
Handles : 641
CPU     : 3.59375
SI      : 1
Name    : iexplore

Anda dapat menentukan properti sebanyak yang Anda inginkan:

Get-Process -Name iexplore | Format-List -Property ProcessName,FileVersion,StartTime,Id
ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime   : 10/22/2019 11:23:58 AM
Id          : 12808

ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime   : 10/22/2019 11:23:57 AM
Id          : 21748

Mendapatkan informasi terperinci menggunakan Format-List dengan wildcard

Format-List Cmdlet memungkinkan Anda menggunakan kartubebas sebagai nilai parameter Propertinya. Ini memungkinkan Anda menampilkan informasi terperinci. Seringkali, objek menyertakan lebih banyak informasi daripada yang Anda butuhkan, itulah sebabnya PowerShell tidak menampilkan semua nilai properti secara default. Untuk memperlihatkan semua properti objek, gunakan Format-List -Property * perintah . Perintah berikut menghasilkan lebih dari 60 baris output untuk satu proses:

Get-Process -Name iexplore | Format-List -Property *

Format-List Meskipun perintah berguna untuk menampilkan detail, jika Anda menginginkan gambaran umum output yang mencakup banyak item, tampilan tabular yang lebih sederhana sering lebih berguna.

Menggunakan Format-Tabel untuk output tabular

Jika Anda menggunakan Format-Table cmdlet tanpa nama properti yang ditentukan untuk memformat output Get-Process perintah, Anda mendapatkan output yang sama persis seperti yang Anda lakukan tanpa Format cmdlet. Secara default, PowerShell menampilkan objek Proses dalam format tabular.

Get-Service -Name win* | Format-Table
Status   Name               DisplayName
------   ----               -----------
Running  WinDefend          Windows Defender Antivirus Service
Running  WinHttpAutoProx... WinHTTP Web Proxy Auto-Discovery Se...
Running  Winmgmt            Windows Management Instrumentation
Running  WinRM              Windows Remote Management (WS-Manag...

Catatan

Get-Service hanya tersedia di platform Windows.

Meningkatkan output Format-Tabel

Meskipun tampilan tabular berguna untuk menampilkan banyak informasi, mungkin sulit untuk menafsirkan apakah tampilan terlalu sempit untuk data. Dalam contoh sebelumnya, output dipotong. Jika Anda menentukan parameter AutoSize saat menjalankan Format-Table perintah, PowerShell menghitung lebar kolom berdasarkan data aktual yang ditampilkan. Ini membuat kolom dapat dibaca.

Get-Service -Name win* | Format-Table -AutoSize
Status  Name                DisplayName
------  ----                -----------
Running WinDefend           Windows Defender Antivirus Service
Running WinHttpAutoProxySvc WinHTTP Web Proxy Auto-Discovery Service
Running Winmgmt             Windows Management Instrumentation
Running WinRM               Windows Remote Management (WS-Management)

Format-Table Cmdlet mungkin masih memotong data, tetapi hanya terpotong di akhir layar. Properti, selain yang terakhir ditampilkan, diberikan ukuran sebanyak yang mereka butuhkan agar elemen data terpanjang mereka ditampilkan dengan benar.

Get-Service -Name win* |
    Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -AutoSize
Name                 Status StartType DisplayName                               DependentServi
                                                                                ces
----                 ------ --------- -----------                               --------------
WinDefend           Running Automatic Windows Defender Antivirus Service        {}
WinHttpAutoProxySvc Running    Manual WinHTTP Web Proxy Auto-Discovery Service  {NcaSvc, iphl…
Winmgmt             Running Automatic Windows Management Instrumentation        {vmms, TPHKLO…
WinRM               Running Automatic Windows Remote Management (WS-Management) {}

Format-Table Perintah mengasumsikan bahwa properti tercantum dalam urutan kepentingan. Cmdlet mencoba menampilkan properti yang paling dekat dengan awal sepenuhnya. Format-Table Jika perintah tidak dapat menampilkan semua properti, perintah akan menghapus beberapa kolom dari tampilan. Anda dapat melihat perilaku ini di properti DependentServices contoh sebelumnya.

Membungkus output Format-Tabel dalam kolom

Anda dapat memaksa data panjang Format-Table untuk dibungkus dalam kolom tampilannya menggunakan parameter Bungkus . Menggunakan parameter Bungkus mungkin tidak melakukan apa yang Anda harapkan, karena menggunakan pengaturan default jika Anda tidak juga menentukan UkuranOtomatis:

Get-Service -Name win* |
    Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -Wrap
Name                 Status StartType DisplayName                               DependentServi
                                                                                ces
----                 ------ --------- -----------                               --------------
WinDefend           Running Automatic Windows Defender Antivirus Service        {}
WinHttpAutoProxySvc Running    Manual WinHTTP Web Proxy Auto-Discovery Service  {NcaSvc,
                                                                                iphlpsvc}
Winmgmt             Running Automatic Windows Management Instrumentation        {vmms,
                                                                                TPHKLOAD,
                                                                                SUService,
                                                                                smstsmgr…}
WinRM               Running Automatic Windows Remote Management (WS-Management) {}

Menggunakan parameter Bungkus dengan sendirinya tidak memperlambat pemrosesan sangat banyak. Namun, menggunakan AutoSize untuk memformat daftar file rekursif dari struktur direktori besar dapat memakan waktu lama dan menggunakan banyak memori sebelum menampilkan item output pertama.

Jika Anda tidak khawatir tentang beban sistem, maka AutoSize berfungsi dengan baik dengan parameter Bungkus. Kolom awal masih menggunakan lebar sebanyak yang diperlukan untuk menampilkan item pada satu baris, tetapi kolom akhir dibungkus, jika perlu.

Catatan

Beberapa kolom mungkin tidak ditampilkan saat Anda menentukan kolom terluas terlebih dahulu. Untuk hasil terbaik, tentukan elemen data terkecil terlebih dahulu.

Dalam contoh berikut, kami menentukan properti terluas terlebih dahulu.

Get-Process -Name iexplore |
    Format-Table -Wrap -AutoSize -Property FileVersion, Path, Name, Id

Bahkan dengan pembungkusan, kolom Id akhir dihilangkan:

FileVersion                          Path                                                  Nam
                                                                                           e
-----------                          ----                                                  ---
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE iex
                                                                                           plo
                                                                                           re
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files\Internet Explorer\iexplore.exe       iex
                                                                                           plo
                                                                                           re

Mengatur output tabel

Parameter lain yang berguna untuk kontrol output tabular adalah GroupBy. Daftar tabular yang lebih panjang khususnya mungkin sulit dibandingkan. Parameter GroupBy mengelompokkan output berdasarkan nilai properti. Misalnya, kita dapat mengelompokkan layanan menurut StartType untuk inspeksi yang lebih mudah, menghilangkan nilai StartType dari daftar properti:

Get-Service -Name win* | Sort-Object StartType | Format-Table -GroupBy StartType
   StartType: Automatic
Status   Name               DisplayName
------   ----               -----------
Running  WinDefend          Windows Defender Antivirus Service
Running  Winmgmt            Windows Management Instrumentation
Running  WinRM              Windows Remote Management (WS-Managem…

   StartType: Manual
Status   Name               DisplayName
------   ----               -----------
Running  WinHttpAutoProxyS… WinHTTP Web Proxy Auto-Discovery Serv…