Zmienianie widoku danych wyjściowych przy użyciu poleceń Format
Program PowerShell ma zestaw poleceń cmdlet, które umożliwiają kontrolowanie sposobu wyświetlania właściwości dla określonych obiektów. Nazwy wszystkich poleceń cmdlet zaczynają się od zlecenia Format
. Umożliwiają one wybranie właściwości, które chcesz wyświetlić.
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
W tym artykule opisano Format-Wide
polecenia cmdlet , Format-List
i Format-Table
.
Każdy typ obiektu w programie PowerShell ma właściwości domyślne, które są używane, gdy nie wybierasz właściwości do wyświetlenia. Każde polecenie cmdlet używa tego samego parametru Właściwości , aby określić, które właściwości mają być wyświetlane. Ponieważ Format-Wide
pokazuje tylko jedną właściwość, jej parametr Property przyjmuje tylko jedną wartość, ale parametry Format-List
właściwości i Format-Table
akceptują listę nazw właściwości.
W tym przykładzie domyślne dane wyjściowe Get-Process
polecenia cmdlet pokazują, że mamy uruchomione dwa wystąpienia programu Internet Explorer.
Get-Process -Name iexplore
Domyślny format obiektów Procesu wyświetla właściwości pokazane tutaj:
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
Używanie formatu dla danych wyjściowych pojedynczego elementu
Polecenie Format-Wide
cmdlet domyślnie wyświetla tylko domyślną właściwość obiektu. Informacje skojarzone z każdym obiektem są wyświetlane w jednej kolumnie:
Get-Command -Verb Format | Format-Wide
Format-Custom Format-Hex
Format-List Format-Table
Format-Wide
Można również określić właściwość inną niż domyślna:
Get-Command -Verb Format | Format-Wide -Property Noun
Custom Hex
List Table
Wide
Kontrolowanie wyświetlania w całym formacie za pomocą kolumny
Format-Wide
Za pomocą polecenia cmdlet można wyświetlić tylko jedną właściwość jednocześnie. Ułatwia to wyświetlanie dużych list w wielu kolumnach.
Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom Hex List
Table Wide
Używanie opcji Format-List dla widoku listy
Polecenie Format-List
cmdlet wyświetla obiekt w formie listy z każdą właściwością oznaczona etykietą i wyświetlaną w osobnym wierszu:
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
Możesz określić dowolną liczbę właściwości:
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
Uzyskiwanie szczegółowych informacji przy użyciu funkcji Format-List z symbolami wieloznacznymi
Polecenie Format-List
cmdlet umożliwia użycie symbolu wieloznakowego jako wartości parametru Property . Dzięki temu można wyświetlić szczegółowe informacje. Często obiekty zawierają więcej informacji niż są potrzebne, dlatego program PowerShell domyślnie nie wyświetla wszystkich wartości właściwości. Aby wyświetlić wszystkie właściwości obiektu, użyj Format-List -Property *
polecenia . Następujące polecenie generuje ponad 60 wierszy danych wyjściowych dla pojedynczego procesu:
Get-Process -Name iexplore | Format-List -Property *
Format-List
Chociaż polecenie jest przydatne do wyświetlania szczegółów, jeśli chcesz zapoznać się z omówieniem danych wyjściowych zawierających wiele elementów, prostszy widok tabelaryczny jest często bardziej przydatny.
Używanie tabeli formatowania dla danych wyjściowych tabelarycznych
Jeśli używasz Format-Table
polecenia cmdlet bez określonych nazw właściwości do formatowania danych wyjściowych Get-Process
polecenia, uzyskasz dokładnie te same dane wyjściowe, co bez Format
polecenia cmdlet. Domyślnie program PowerShell wyświetla obiekty procesu w formacie tabelarycznym.
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...
Uwaga
Get-Service
jest dostępna tylko na platformach systemu Windows.
Ulepszanie danych wyjściowych tabeli formatu
Chociaż widok tabelaryczny przydaje się do wyświetlania wielu informacji, może być trudne do zinterpretowania, jeśli wyświetlacz jest zbyt wąski dla danych. W poprzednim przykładzie dane wyjściowe są obcinane. Jeśli po uruchomieniu Format-Table
polecenia określisz parametr AutoSize, program PowerShell oblicza szerokość kolumn na podstawie wyświetlanych danych. Dzięki temu kolumny są czytelne.
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)
Polecenie Format-Table
cmdlet może nadal obcinać dane, ale obcina je tylko na końcu ekranu.
Właściwości, inne niż ostatni wyświetlany, mają tyle rozmiaru, ile potrzebują, aby ich najdłuższy element danych był wyświetlany poprawnie.
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) {}
W Format-Table
poleceniu przyjęto założenie, że właściwości są wyświetlane w kolejności ważności. Polecenie cmdlet próbuje w pełni wyświetlić właściwości najbliższego początku. Format-Table
Jeśli polecenie nie może wyświetlić wszystkich właściwości, spowoduje to usunięcie niektórych kolumn z ekranu. To zachowanie można zobaczyć we wcześniejszej przykładzie właściwości DependentServices .
Zawijanie danych wyjściowych tabeli w kolumnach
Długie dane można wymusić Format-Table
zawijanie w kolumnie wyświetlania przy użyciu parametru Zawijanie . Użycie parametru Zawijanie może nie robić tego, czego oczekujesz, ponieważ używa ustawień domyślnych, jeśli nie określisz również autosize:
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) {}
Użycie samego parametru Zawijanie nie spowalnia przetwarzania bardzo. Jednak użycie autosize do formatowania cyklicznej listy plików o dużej strukturze katalogów może zająć dużo czasu i używać dużo pamięci przed wyświetleniem pierwszych elementów wyjściowych.
Jeśli nie martwisz się o obciążenie systemu, autosize działa dobrze z parametrem Zawijanie. Początkowe kolumny nadal używają tak dużej szerokości, jak to konieczne, aby wyświetlić elementy w jednym wierszu, ale w razie potrzeby końcowa kolumna jest opakowana.
Uwaga
Niektóre kolumny mogą nie być wyświetlane, gdy najpierw określisz najszersze kolumny. Aby uzyskać najlepsze wyniki, najpierw określ najmniejsze elementy danych.
W poniższym przykładzie najpierw określamy najszersze właściwości.
Get-Process -Name iexplore |
Format-Table -Wrap -AutoSize -Property FileVersion, Path, Name, Id
Nawet w przypadku zawijania końcowa kolumna Id zostanie pominięta:
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
Organizowanie danych wyjściowych tabeli
Innym przydatnym parametrem kontrolki danych wyjściowych tabelarycznych jest GroupBy. Dłuższe listy tabelaryczne w szczególności mogą być trudne do porównania. Parametr GroupBy grupuje dane wyjściowe na podstawie wartości właściwości. Na przykład możemy grupować usługi według właściwości StartType, aby ułatwić inspekcję, pomijając wartość StartType z listy właściwości:
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…