Udostępnij za pośrednictwem


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-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 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…