次の方法で共有


PowerShell での出力におけるアクセシビリティの向上

ほとんどのターミナル環境では、生のテキストのみが表示されます。 スクリーン リーダーに依存するユーザーは、生の出力にコンテンツの形式を特徴付けるアクセシビリティ メタデータがないため、大量の生のテキストを使用する際に面倒なナレーションが発生します。

PowerShell での出力におけるアクセシビリティを向上させるには、次の 2 つの方法があります。

  • 画面の読み取りテクノロジをサポートする別のツールで表示できるようにデータを出力します。
  • 必要なデータをフィルター処理して選択し、テキストをより読みやすい形式で出力することで、ターミナルに表示される出力量を減らします。

ターミナルの外部にあるツールにデータを表示する

大量のデータの場合、ホストへの出力ではなく、画面の読み取りテクノロジをサポートする別のツールで表示できる形式で出力を記述することを検討してください。 別のアプリケーションで開くことができる形式のファイルにデータを保存する必要がある場合があります。

Windows の Out-GridView コマンド

小~中規模の出力には、 Out-GridView コマンドを使用します。 出力は、スプレッドシートと同様に、表形式の Windows Presentation Foundation (WPF) を使用してレンダリングされます。 GridView コントロールを使用すると、データの並べ替え、フィルター処理、検索が可能になり、読み取る必要があるデータの量を減らすことができます。 GridView コントロールにはスクリーン リーダーからもアクセスできます。 Windows に組み込まれている音声案内ツールは、列名や行数など、GridView の詳細を読み取ることができます。

次の例は、GridView コントロール内のサービスの一覧を表示する方法を示しています。

Get-Service | Out-GridView

Out-GridView コマンドは、Windows の PowerShell でのみ使用できます。

文字区切り値 (CSV) 形式

Microsoft Excel などのスプレッドシート アプリケーションでは CSV ファイルがサポートされます。 次の例は、コマンドの出力を CSV ファイルに保存する方法を示しています。

Get-Service | Export-Csv -Path .\myFile.csv
Invoke-Item .\myFile.csv

Invoke-Item コマンドは、CSV ファイルの既定のアプリケーション (通常は Microsoft Excel) でファイルを開きます。

ハイパーテキスト マークアップ言語 (HTML) 形式

HTML ファイルは、 Microsoft Edge などの Web ブラウザーで表示できます。 次の例は、コマンドの出力を HTML ファイルに保存する方法を示しています。

Get-Service | ConvertTo-Html | Out-File .\myFile.html
Invoke-Item .\myFile.html

Invoke-Item コマンドを実行すると、既定の Web ブラウザーでファイルが開きます。

出力量を減らす

出力のアクセシビリティを向上させる 1 つの方法は、ターミナルに表示される出力の量を減らすことです。 PowerShell には、必要なデータのフィルター処理と選択に役立つコマンドがいくつかあります。

データを選択およびフィルター処理する

大量のデータマウントを返す代わりに、Select-ObjectSort-ObjectWhere-Object などのコマンドを使用して出力量を減らします。 次の例では、コンピューター上のサービスの一覧を取得します。

次の各コマンドは、異なる方法で出力を向上させます。

  • -ErrorAction SilentlyContinue パラメーターは、ユーザーが一部のサービスを表示するアクセス許可を持っていない場合に生成される可能性のあるエラー メッセージを抑制します。
  • Where-Object コマンドは、リストをフィルター処理して返される項目の数を減らし、実行中で説明に event があるサービスのみを表示します。
  • Select-Object コマンドは、サービス名と表示名のみを選択します。
  • Format-List コマンドでは、出力がリスト形式で表示され、スクリーン リーダーのナレーションエクスペリエンスが向上します。
Get-Service -ErrorAction SilentlyContinue |
    Where-Object {$_.Status -eq 'Running' -and $_.Description -match 'event'} |
    Select-Object Name, DisplayName |
    Format-List

計算プロパティを使用して出力を再フォーマットする

PowerShell によって出力される .NET オブジェクトの既定のプロパティ名は、冗長でわかりにくい場合があります。 計算プロパティを使用すると、音声案内テクノロジで読み取る際に、プロパティ名と値をわかりやすいものに変更できます。

次の例は、メモリ使用量で上位 5 つのプロセスを取得し、プロセス名とメモリ使用量をメガバイト単位で表示する方法を示しています。

Get-Process |
    Sort-Object WorkingSet -Descending |
    Select-Object -First 5 -Property ProcessName,
        @{n="MemoryMB"; e={'{0:N}' -f ($_.WorkingSet/1Mb)}} |
    Format-List

既定では、Get-Process は使用したメモリのバイト数として WorkingSet を表示します。 書式設定しないと、数値の大きさを把握し難い場合があります。 計算プロパティはバイト数をメガバイトに変換し、数値をコンマで書式を整え、値を小数点以下 2 桁に制限します。

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

追加の参考資料