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 czasownika 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 polecenia cmdlet Format-Wide
, 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 Property, aby określić, które właściwości mają być wyświetlane. Ponieważ Format-Wide
pokazuje tylko jedną właściwość, jego parametr Property przyjmuje tylko jedną wartość, ale parametr właściwości Format-List
i Format-Table
akceptuje listę nazw właściwości.
W tym przykładzie domyślne dane wyjściowe cmdlet-u Get-Process
pokazują, że uruchomione są dwa wystąpienia programu Internet Explorer.
Get-Process -Name iexplore
Domyślny format obiektów Process 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 Format-Wide dla jednoelementowej danej wyjściowej
Polecenie cmdlet Format-Wide
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 Format-Wide za pomocą kolumny
Za pomocą polecenia cmdlet Format-Wide
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 Format-List dla widoku listy
Polecenie cmdlet Format-List
wyświetla obiekt w postaci listy, każda właściwość jest oznaczona etykietą i wyświetlana 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 Format-List za pomocą symboli wieloznacznych
Polecenie cmdlet Format-List
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 polecenia Format-List -Property *
. Następujące polecenie generuje ponad 60 wierszy danych wyjściowych dla pojedynczego procesu:
Get-Process -Name iexplore | Format-List -Property *
Chociaż polecenie Format-List
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 Format-Table dla danych wyjściowych tabelarycznych
Jeśli używasz polecenia cmdlet Format-Table
bez nazw właściwości określonych do formatowania danych wyjściowych polecenia Get-Process
, uzyskasz dokładnie te same dane wyjściowe, co bez polecenia cmdlet Format
. Domyślnie program PowerShell wyświetla obiekty Process 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 windows.
Ulepszanie rezultatów Format-Table
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ą skrócone. Jeśli podczas uruchamiania polecenia Format-Table
określisz parametr autosize, program PowerShell oblicza szerokość kolumn na podstawie wyświetlanych rzeczywistych 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 cmdlet Format-Table
może nadal przycinać dane, ale przycina je wyłącznie 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) {}
Polecenie Format-Table
zakłada, że właściwości są wymienione w kolejności ważności. Polecenie cmdlet próbuje w pełni wyświetlić właściwości jak najbliżej początku. Jeśli polecenie Format-Table
nie może wyświetlić wszystkich właściwości, spowoduje to usunięcie niektórych kolumn z ekranu. To zachowanie można zobaczyć w poprzednim przykładzie właściwości DependentServices.
Zawijanie danych wyjściowych Format-Table w kolumnach
Za pomocą parametru Zawijanie można wymusić zawijanie długich danych Format-Table
w kolumnie na ekranie. Użycie parametru Wrap 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 parametru Wrap samo w sobie nie spowalnia przetwarzania. 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żej ilości 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 Wrap. 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 kolumna identyfikatora końcowego 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. GroupBy grupuje dane wyjściowe na podstawie wartości właściwości. Na przykład możemy grupować usługi według StartType w celu łatwiejszej inspekcji, 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…