Udostępnij za pomocą


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 ekranowych mają do czynienia z monotonną narracją podczas przeglądania dużych ilości surowego tekstu, ponieważ surowe dane wyjściowe nie zawierają metadanych ułatwień dostępu, które charakteryzowałyby format 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, zamiast przesyłać je jako dane wyjściowe do hosta, rozważ zapisanie danych 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

Dla małego do umiarkowanego rozmiaru wyniku użyj polecenia Out-GridView. 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żą ilość danych, użyj poleceń, takich jak Select-Object, Sort-Object i Where-Object, aby zmniejszyć ilość danych. Poniższy przykład uzyskuje 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, filtrując listę, aby wyświetlić tylko te usługi, które są uruchomione i mają event w opisie.
  • 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

Przeformatuj dane wyjściowe przy użyciu właściwości obliczeniowych

Domyślne nazwy właściwości obiektów platformy .NET generowane przez PowerShell mogą być rozbudowane 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 odczytania i zrozumienia 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 wyświetla zestaw roboczy jako liczbę 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