Windows PowerShell Scripting – Format-Table (FT)
Format-Table, w skrócie FT, kontroluje formatowanie wyjścia poleceń Windows PowerShell. Gdy ważna jest prezentacja informacji, należy wpisać dane wyjściowe skryptu do Format-Table. Na tej stronie pokażę przykłady użycia tego prostego, ale jakże ważnego polecenia.
Tematy dotyczące Format-Table w Windows PowerShell
- Format-Table – proste przykłady
- Format-Table – przykłady pośrednie
- Format-Table z Get-WmiObject
- Format-Table Alias FT
- Format-Wide
- PowerShell Format-List
Format-Table – Proste przykłady
Scenariusz: chcemy zbadać procesy uruchomione na stacji roboczej lub na serwerze Windows.
Wymagania wstępne:
PowerShell i .Net framework są zainstalowane na komputerze.
Przycisk PS> Lub jeśli masz PowerShell 2.0, uruchom ISE.
Przykład 1a
Zacznijmy od przykładu z użyciem domyślnego formatowania:
# Preliminary example, no Format-Table yetGet-Process
„Problem” polega na tym, że nazwa procesu jest po prawej stronie, a na wyjściu mamy kolumny, które nas nie interesują.
Przykład 1b
Pozwól, że wprowadzę teraz Format-Table, abyśmy mogli kontrolować, które właściwości mają być wyświetlane na wyjściu. Załóżmy, że interesują nas tylko 'Handles'.
# Example of PowerShell Format-TableGet-Process | Format-Table ProcessName, Handles -auto
Uwaga 1: Dzięki Format-Table, mamy teraz nazwę procesu w pierwszej kolumnie.
Uwaga 2: -auto zapobiega rozciągnięciu wyjścia na całą szerokość, a co za tym idzie, parametr -auto sprawia, że liczby są łatwiejsze do odczytania. Aby zobaczyć efekt, spróbuj wykonać powyższe polecenie bez -auto.
Guy Poleca: Network Performance Monitor (FREE TRIAL)
SolarWinds Network Performance Monitor (NPM) pomoże Ci odkryć co dzieje się w Twojej sieci. Narzędzie to poprowadzi Cię również przez rozwiązywanie problemów; tablica rozdzielcza wskaże, czy przyczyną jest uszkodzone łącze, wadliwy sprzęt czy przeciążenie zasobów.
To, co podoba mi się najbardziej, to sposób, w jaki NPM sugeruje rozwiązania problemów z siecią. Posiada również możliwość monitorowania kondycji poszczególnych maszyn wirtualnych VMware. Jeśli jesteś zainteresowany rozwiązywaniem problemów i tworzeniem map sieci, to polecam wypróbowanie NPM na 30-dniowym darmowym okresie próbnym.
SolarWinds Network Performance Monitor Download 30-day FREE Trial
Troubleshooting Format-Table
Główną rzeczą, która idzie źle z Format-Table jest zapominanie o rurze (|) przed poleceniem. Moją techniką jest uruchomienie głównego polecenia, a następnie użycie (|) do wysłania wyjścia do Format-Table. Stamtąd możemy wypisać nazwy właściwości, które chcemy wyświetlić.
Drugim problemem z tym cmdletem jest zapominanie o przecinku pomiędzy właściwościami; ale pamiętaj, że nie ma przecinka po Format-Table i przed pierwszą właściwością.
Get-Process | Format-Table ProcessName, Handles ID -autoGet-Process | Format-Table ProcessName, Handles, ID -auto
Format-Table – Przykłady pośrednie
Przykład 2a:
Czas zbadać jakie inne właściwości Get-Process są dostępne, wtedy możemy dostroić nasze polecenie Format-Table.
# Example of PowerShell Format-Table for propertiesGet-Process | Get-Member -Membertype property
Przykład 2b: Nawet tutaj nie mogę się oprzeć użyciu Format-Table do filtrowania, która kolumna zostanie wyeksportowana do pliku.
$Proc = Get-Process | Get-Member -Membertype property$Proc | Format-Table Name | Out-File procprop1.txt
Uwaga 3: Wprowadzenie zmiennej $Proc nie jest tak naprawdę konieczne, jednak jedną z zalet tej techniki jest to, że oszczędza problemów z zawijaniem słów naszego skryptu do następnej linii.
Przykład 3a: W wyniku tych badań możemy wybrać kilka różnych kolumn na wyjściu, na przykład BasePriority i HandleCount:
# Przykład PowerShell Format-Table dla wielu elementów
Get-Process | Format-Table Name, HandleCount, BasePriority
Przykład 3b: Zobaczmy, co się stanie, gdy dodamy -auto.
# Example of PowerShell Format output for multiple itemsGet-Process | Format-Table Name, HandleCount, BasePriority -auto
Guy Recommends: SolarWinds Engineer’s Toolset (FREE TRIAL)
Ten zestaw narzędzi inżynierskich zapewnia wszechstronną konsolę 50 narzędzi do rozwiązywania problemów z komputerem. Guy mówi, że pomaga mi monitorować to, co dzieje się w sieci, a każde narzędzie uczy mnie więcej o tym, jak działa podstawowy system.
Jest tak wiele dobrych gadżetów; to jak posiadanie wolnej ręki w sklepie ze słodyczami. Na szczęście narzędzia są wyświetlane w logiczny sposób: monitorowanie, odkrywanie sieci, diagnostyka i narzędzia Cisco. Wypróbuj zestaw narzędzi SolarWinds Engineer’s Toolset na 14-dniowym bezpłatnym okresie próbnym już teraz!
SolarWinds Engineer’s Toolset Download 14-day FREE Trial
Format-Table with Get-WmiObject
Format-Table przydaje się, gdy mamy do czynienia z klasami Get-WmiObject. Ponieważ dane wyjściowe zawierają więcej niż 5 właściwości, a domyślny układ jest uprzejmy Format-List; wolę wybrać moje właściwości i użyć Format-Table.
Przykład 4: Get-WmiObject
# Example of Get-WmiObject with default outputGet-WmiObject -Class Win32_NetworkAdapter
Zauważmy (powyżej), że domyślnym formatem zalecanym dla Get-WmiObject jest Format-List. Możemy jednak przekierować wyjście do Format-Table (zobacz poniżej)
Clear-Host# Example of Get-WmiObject with Format-Table outputGet-WmiObject -Class Win32_NetworkAdapter |Format-Table DeviceId, Name, MACAddress -AutoSize
Parametry Format-Table PowerShella
Widzieliśmy już parametr Format-Table -auto, teraz zbadajmy więcej przełączników:
# Extra parameters for PowerShell to Format outputClear-hostGet-Help Format-Table -full
Uwaga 4: Jednym z moich ulubionych parametrów Format-Table jest -GroupBy
Przykład 5: -GroupBy
Format-Table posiada parametr o nazwie -GroupBy, który oferuje metodę agregacji danych.
Uwaga 5: Out-GridView: PowerShell v 2.0 wprowadza nowy cmdlet do kontroli wyświetlania danych. Zobacz więcej jak przekierować wyniki do Out-GridView.
Przykład 6: Sort-object (Może być skracany do 'Sort')
Inną techniką na uzyskanie porządku na wyjściu jest zastosowanie Sort-object.
$Proc = Get-Process | Sort-Object -descending BasePriority$Proc | Format-Table Name, HandleCount, BasePriority -auto
Alias Format-Table FT
W Microsofcie, zawsze są co najmniej trzy sposoby robienia wszystkiego, co wydaje się być nadmiarowością, gdy jesteś ekspertem, wydaje się być perspektywą, gdy jesteś początkujący. Jednym z oczywistych przykładów jest to, że można skrócić Format-Table do FT. W miarę zwiększania zakresu poleceń PowerShell, zwróć uwagę na inne aliasy PowerShell, na przykład gwmi dla Get-WmiObject i gci (Get-Childitem).
Oto alternatywne metody osiągnięcia powyższych celów, każdy przykład jest zaprojektowany tak, aby rozwinąć twoje widzenie lornetkowe, a więc widzieć cel wyraźniej. Na przykład, jeśli poeksperymentujesz z format-wide i format-List, rozszerzysz swój zakres opcji formatowania.
Guy Recommends: SolarWinds Admin Bundle for Active Directory (FREE TOOL)
Importuj użytkowników z arkusza kalkulacyjnego. Wystarczy podać listę użytkowników z ich polami w górnym wierszu i zapisać jako plik .csv. Następnie uruchom to DARMOWE narzędzie i dopasuj swoje pola do atrybutów AD, kliknij i zaimportuj użytkowników.
Opcjonalnie możesz podać nazwę OU, w którym powstaną nowe konta. Pobierz swoje DARMOWE narzędzie do masowego importu.
SolarWinds Admin Bundle Pobierz 100% FREE Tool Bundle
Jeśli potrzebujesz bardziej kompleksowego oprogramowania do analizy aplikacji, Pobierz darmową wersję próbną SAM (Server & Application Monitor)
PowerShell FT Alias Examples
Przykład 7a:
# Example of PowerShell Format output with FTGet-Process | FT ProcessName, Handles, PagedMemorySize -auto
Punkty nauczania. Możesz zastąpić FT dla Format-Table. Możesz również badać inne właściwości, na przykład PagedMemorySize.
Przykład 7b:
Clear-hostGet-Process | Get-Member -Membertype method | FT name
Punkty nauczania. Oprócz właściwości, możesz badać metody obiektu. Na przykład, w innych skryptach możesz chcieć wykorzystać metodę .kill().
Przykład 7c:
Get-Process | FT Name, HandleCount -groupby BasePriority -auto
Punkty nauczania. Używanie zmiennych nie jest konieczne. Jest to prostszy przykład skupiający się na przełączniku -groupby.
Format-Wide Cmdlet
Jak odkryć więcej formatujących Cmdletów
Clear-HostGet-Command -verb format
Oprócz Format-Table, możesz wyświetlać dane nie w jednej kolumnie, ale w dwóch lub trzech kolumnach. Jest to opcja format-wide lub (fw), która jest przydatna, gdy mamy długą listę z tylko jednym polem, na przykład:
Get-Process | Get-Member -Membertype method | Format-Wide name -column 3.
Format-List
Innym sposobem, w jaki PowerShell może formatować dane wyjściowe jest lista. Jest to przydatne, gdy chcesz wyświetlić wiele właściwości dla jednego obiektu. Oto przykład:
#Example of PowerShell Format-ListGet-Process services | Format-List -property *
Uwaga 6: To, co sprawia, że warto korzystać z Format-List, to symbol wieloznaczny * (gwiazdka).
Zobacz więcej na temat Format-List”
Technika tworzenia skryptów (cmdletów)
Jeśli chodzi o naszą technikę pracy z Format-Table, doszliśmy do rozdroża. Moją preferowaną metodą pracy jest tworzenie skryptów, a następnie uruchamianie ich z linii poleceń PowerShell. Inną alternatywą jest ciągłe wpisywanie i ponowne wpisywanie poleceń w powłoce. Moja technika sprawdza się, gdy komendy są złożone; jako bonus, moje skrypty dokumentują to, co robię, więc łatwo jest odnieść się i udoskonalić poprzednie eksperymenty.
Jeśli i tobie podoba się ta metoda skryptu (cmdlet), to najpierw upewnij się, że PowerShell pozwoli na uruchomienie skryptu, musisz to zrobić tylko raz, wpisz :Set-ExecutionPolicy RemoteSigned
Zakładając, że zapisałem przykład 2 w pliku o nazwie proc.ps1, to co robię, to przechodzę do znaku zachęty PS i wpisuję .proc. Musisz albo zapisać skrypt do katalogu roboczego, albo użyć cd, aby przejść do katalogu, w którym skrypt został zapisany.
„
Podsumowanie Format-Table w Windows PowerShell
Prezentacja naprawdę przekształca dane wyjściowe skryptów PowerShell. Również, gdy otrzymujesz zbyt wiele informacji, odpowiedzią jest filtrowanie i zmniejszenie liczby kolumn w wyświetlaniu. Innym razem trzeba wyświetlić dodatkowe właściwości, które nie są pokazywane przez domyślne polecenie. W każdym przypadku Format-Table daje kontrolę nad prezentacją danych wyjściowych.
Pomimo że Format-Table (lub w skrócie FT), jest wszechobecnym poleceniem, posiada wiele przełączników. Dzięki rozsądnemu stosowaniu tych przełączników można tworzyć kreatywne i efektywne pliki wyjściowe.
Zobacz więcej poradników Microsoft PowerShell dotyczących danych wyjściowych:
– PShell Home – Out-File – Out-GridView – ConvertTo-Csv – ConvertTo-Html – ConvertFrom-Csv
– Tee-Object – Import-CSV – Format-Table – PowerShell Here-String – ConvertFrom-JSON
– Export-CliXml – Format-List – Read-Host – PowerShell Get-History – -f format – Pipe to file
Proszę o maila jeśli ma Pan lepszy przykładowy skrypt. Proszę również o zgłaszanie wszelkich błędów merytorycznych, gramatycznych oraz niedziałających linków, z chęcią je poprawię.