대부분의 터미널 환경에는 원시 텍스트만 표시됩니다. 화면 읽기 프로그램을 사용하는 사용자는 원시 출력에 콘텐츠 형식의 특징을 지정하는 접근성 메타데이터가 없기 때문에 대량의 원시 텍스트를 사용할 때 지루한 설명에 직면하게 됩니다.
PowerShell에서 출력의 접근성을 개선하는 방법에는 두 가지가 있습니다.
- 화면 읽기 기술을 지원하는 다른 도구에서 볼 수 있는 방식으로 데이터를 출력합니다.
- 원하는 데이터를 필터링 및 선택하여 터미널에 표시되는 출력 양을 줄이고 텍스트를 더 읽기 쉬운 형식으로 출력합니다.
터미널 외부의 도구에 데이터 표시
호스트에 출력하는 대신 많은 양의 데이터의 경우 화면 읽기 기술을 지원하는 다른 도구에서 볼 수 있는 형식으로 출력을 작성하는 것이 좋습니다. 다른 애플리케이션에서 열 수 있는 형식으로 파일에 데이터를 저장해야 할 수도 있습니다.
Windows의 Out-GridView 명령
출력이 크기가 작거나 보통인 경우에는 Out-GridView 명령을 사용합니다. 출력은 스프레드시트와 마찬가지로 테이블 형식으로 WPF(Windows Presentation Foundation)를 사용하여 렌더링됩니다. 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 명령은 일반적으로 Microsoft Excel인 CSV 파일의 기본 응용 프로그램에서 파일을 엽니다.
HTML(HyperText Markup Language) 형식
HTML 파일은 Microsoft Edge와 같은 웹 브라우저에서 볼 수 있습니다. 다음 예제에서는 명령의 출력을 HTML 파일에 저장하는 방법을 보여 있습니다.
Get-Service | ConvertTo-Html | Out-File .\myFile.html
Invoke-Item .\myFile.html
이 Invoke-Item 명령은 기본 웹 브라우저에서 파일을 엽니다.
출력 양 줄이기
출력의 접근성을 향상시키는 한 가지 방법은 터미널에 표시되는 출력의 양을 줄이는 것입니다. PowerShell에는 원하는 데이터를 필터링하고 선택하는 데 도움이 되는 몇 가지 명령이 있습니다.
데이터 선택 및 필터링
대용량 데이터 탑재를 반환하는 대신 , Select-ObjectSort-Object 등의 Where-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을 사용된 메모리 바이트 수로 표시합니다. 서식을 지정하지 않으면 숫자의 크기를 이해하기 어려울 수 있습니다. 계산된 속성은 바이트 수를 메가바이트로 변환하고 쉼표로 숫자의 서식을 지정하고 값을 10진수 두 자리로 제한합니다.
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
추가 자료
PowerShell