Udostępnij za pośrednictwem


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-Objecti 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 opisu event .
  • 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

Materiały uzupełniające