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-Widepolecenia cmdlet , Format-Listi 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…