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 menentukan properti mana yang akan ditampilkan. Setiap cmdlet juga menggunakan parameter Properti yang sama untuk menentukan properti mana yang ingin Anda tampilkan. Karena Format-Wide hanya menampilkan satu properti, parameter Propertinya hanya 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 Single-Item

Cmdlet Format-Wide , 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-Wide dengan Kolom

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

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

Menggunakan Format-List 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 dengan Menggunakan Format-List dengan Wildcard

Cmdlet Format-List 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 menampilkan 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 ini berguna untuk menampilkan detail, jika Anda menginginkan gambaran umum output yang mencakup banyak item, tampilan tabular yang lebih sederhana sering lebih berguna.

Menggunakan Format-Table 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...

Meningkatkan output Format-Table (Ukuran Otomatis)

Meskipun tampilan tabular berguna untuk menampilkan banyak informasi, mungkin sulit untuk menafsirkan apakah tampilan terlalu sempit untuk data. Dalam contoh sebelumnya, output dipotok. 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 memotong di akhir layar. Properti, selain yang terakhir ditampilkan, diberikan ukuran sebanyak yang mereka butuhkan agar elemen data terpanjang 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. Jadi ia mencoba untuk sepenuhnya menampilkan properti terdekat dari awal. 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 Format-Table Output dalam Kolom (Bungkus)

Anda dapat memaksa data panjang Format-Table untuk dibungkus dalam kolom tampilannya dengan 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 terlalu memperlambat pemrosesan. 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 UkuranOtomatis 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 (-GroupBy)

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…