Zwiększanie dostępności danych wyjściowych w programie PowerShell
Większość środowisk terminalowych wyświetla tylko nieprzetworzone tekst. Użytkownicy korzystający z czytników zawartości ekranu mają do czynienia z żmudną narracją podczas korzystania z dużych ilości nieprzetworzonego tekstu, ponieważ nieprzetworzone dane wyjściowe nie mają metadanych ułatwień dostępu do scharakteryzowania formatu zawartości.
Istnieją dwa sposoby poprawy dostępności danych wyjściowych w programie PowerShell:
- Wyprowadź dane w sposób, w jaki można je wyświetlić w innym narzędziu obsługującym technologie odczytu ekranu.
- Zmniejsz ilość danych wyjściowych wyświetlanych w terminalu, filtrując i wybierając żądane dane i wyświetlając tekst w bardziej czytelnym formacie.
Wyświetlanie danych w narzędziu poza terminalem
W przypadku dużych ilości danych, a nie danych wyjściowych hosta, rozważ zapisanie danych wyjściowych w formacie, który można wyświetlić w innym narzędziu obsługującym technologie odczytu ekranu. Może być konieczne zapisanie danych w pliku w formacie, który można otworzyć w innej aplikacji.
Polecenie Out-GridView w systemie Windows
W przypadku małych i średnich rozmiarów danych wyjściowych użyj Out-GridView
polecenia . Dane wyjściowe są renderowane przy użyciu programu Windows Presentation Foundation (WPF) w formie tabelarycznej, podobnie jak arkusz kalkulacyjny. Kontrolka GridView umożliwia sortowanie, filtrowanie i przeszukiwanie danych, co zmniejsza ilość danych, które należy odczytać. Kontrolka GridView jest również dostępna dla czytników zawartości ekranu. Narzędzie Narrator wbudowane w system Windows umożliwia odczytywanie szczegółów kontrolki GridView, w tym nazw kolumn i liczby wierszy.
W poniższym przykładzie pokazano, jak wyświetlić listę usług w kontrolce GridView.
Get-Service | Out-GridView
Polecenie Out-GridView
jest dostępne tylko w programie PowerShell w systemie Windows.
Format wartości rozdzielanych znakami (CSV)
Aplikacje arkusza kalkulacyjnego, takie jak Microsoft Excel , obsługują pliki CSV. W poniższym przykładzie pokazano, jak zapisać dane wyjściowe polecenia w pliku CSV.
Get-Service | Export-Csv -Path .\myFile.csv
Invoke-Item .\myFile.csv
Polecenie Invoke-Item
otwiera plik w domyślnej aplikacji dla plików CSV, który jest zwykle programem Microsoft Excel.
Format języka znaczników hypertext (HTML)
Pliki HTML mogą być wyświetlane przez przeglądarki internetowe, takie jak Microsoft Edge. W poniższym przykładzie pokazano, jak zapisać dane wyjściowe polecenia w pliku HTML.
Get-Service | ConvertTo-HTML | Out-File .\myFile.html
Invoke-Item .\myFile.html
Polecenie Invoke-Item
otwiera plik w domyślnej przeglądarce internetowej.
Zmniejsz ilość danych wyjściowych
Jednym ze sposobów poprawy dostępności danych wyjściowych jest zmniejszenie ilości danych wyjściowych wyświetlanych w terminalu. Program PowerShell ma kilka poleceń, które mogą ułatwić filtrowanie i wybieranie żądanych danych.
Wybieranie i filtrowanie danych
Zamiast zwracać dużą instalację danych, użyj poleceń, takich jak Select-Object
, Sort-Object
i Where-Object
, aby zmniejszyć ilość danych wyjściowych. Poniższy przykład pobiera listę usług na komputerze.
Każde z poniższych poleceń poprawia dane wyjściowe w inny sposób:
- Parametr
-ErrorAction SilentlyContinue
pomija komunikaty o błędach, które mogą być generowane, jeśli użytkownik nie ma uprawnień do wyświetlania niektórych usług. - Polecenie
Where-Object
zmniejsza liczbę zwracanych elementów przez filtrowanie listy w celu wyświetlenia tylko uruchomionych usług i ich opisuevent
. - Polecenie
Select-Object
wybiera tylko nazwę usługi i nazwę wyświetlaną. - Polecenie
Format-List
wyświetla dane wyjściowe w formacie listy, co zapewnia lepsze środowisko narracji dla czytników zawartości ekranu.
Get-Service -ErrorAction SilentlyContinue |
Where-Object {$_.Status -eq 'Running' -and $_.Description -Match 'event'} |
Select-Object Name, DisplayName |
Format-List
Ponowne formatowanie danych wyjściowych przy użyciu właściwości obliczeniowych
Domyślne nazwy właściwości obiektów platformy .NET wyjściowe przez program PowerShell mogą być pełne i mylące. Możesz użyć właściwości obliczeniowych, aby zmienić nazwy właściwości i wartości na coś łatwiejszego do zrozumienia podczas odczytywania przez technologię narratora.
W poniższym przykładzie pokazano, jak uzyskać pięć najważniejszych procesów według użycia pamięci i wyświetlić nazwę procesu i użycie pamięci w megabajtach.
Get-Process |
Sort-Object WorkingSet -Descending |
Select-Object -First 5 -Property ProcessName,
@{n="MemoryMB"; e={'{0:N}' -f ($_.WorkingSet/1Mb)}} |
Format-List
Domyślnie Get-Process
zestaw roboczy jest wyświetlany jako liczba użytych bajtów pamięci. Bez formatowania trudno jest zrozumieć wielkość liczby. Właściwość obliczeniowa konwertuje liczbę bajtów na megabajty i formatuje liczbę przecinkami i ogranicza wartość do dwóch miejsc dziesiętnych.
ProcessName : vmmemWSL
MemoryMB : 1,217.69
ProcessName : Memory Compression
MemoryMB : 780.45
ProcessName : Code
MemoryMB : 726.43
ProcessName : OUTLOOK
MemoryMB : 460.16
ProcessName : msedgewebview2
MemoryMB : 428.94