Pipeline
두 가지 이상의 구문을 연결하기 위한 방법이 뭐가 있을까?
Unix 기반 운영체제 특히 리눅스를 자주 사용해 봤다면 한 번쯤 경험해 봤을 것이다.
바로 Pipeline이다.
Pipe는 한쪽(왼쪽)의 출력을 다른 한쪽(오른쪽)의 입력으로 전달하는 기능을 담당한다.
PowerShell에서 보통 Get과 Set동사를 조합하여 사용하는데, 그 예제를 따라해보자
예제
Get-Process | Stop-Process
실행 중이던 메모장과 그림판을 모두 종료하려 한다.
Get-Process를 통해 프로세스 상태를 확인해 보니 각각 2개씩 켜져 있는 것을 확인했다.
Get-Process notepad, mspaint
Img2 출력 속 프로세스를 모두 종료시키려면 어떻게 해야 할까?
바로 pipe를 통해 Stop-Process로 전달하면 된다.
pipe는 왼쪽의 모든 것을 오른쪽으로 넘긴다는 것을 기억하자.
코드는 아래와 같이 구성될 것이다.
Get-Process notepad, mspaint | Stop-Process
실행해보면 모든 메모장과 그림판이 종료된다.
Get-Process의 결과로 나온 객체가 그대로 Stop-Process의 인자로 전달되는 것이다.
Get-Process | Out-GridView
Get-Process의 결과를 Out-GridView를 통해 대화형 테이블 창으로 출력해 보자
Get-Process | Out-GridView
많은 데이터를 Out-GridView를 통하여 깔끔하게 정리할 수 있다.
참고로 Out-GridView의 대화형 테이블 창은 다음 기능이 있다
- 열 숨기기, 표시 및 순서 다시 지정
- 행 정렬
- 빠른 필터
- 조건 필터 추가
- 복사 및 붙여 넣기
Get-ChildItem | Select-String
window setup log속 첫 부팅 성공 로그를 찾아보자
Window Setup Log는 C:\Windows\Panther에 저장된다
코드는 아래와 같다
Get-ChildItem C:\Windows\Panther | Select-String 'First Boot'
해당 경로에 저장되는 log파일들을 Select-String에 전달한다.
Select-String은 입력 문자열이나 파일에서 텍스트 패턴을 검색하는 명령이다
출력 형식
PowerShell의 각 개체 형식에는 출력되는 기본 속성이 존재한다.
그중 3가지 속성을 pipe와 함께 알아가 보자
Format-Table
Img5에 보이는 출력 형태는 Format-Table 형식이며
기본적으로 PowerShell은 Process 개체를 테이블 형식으로 출력한다고 한다.
여기에 그치지 않고 사용자는 각자의 필요에 맞게 테이블을 만질 수 있다
Img5속 헤더들 중 Name과 LastWriteTime만을 출력시켜 보자
Get-ChildItem | Format-Table Name, LastWriteTime
테이블의 헤더만 안다면 원하는 대로 출력값에 필터를 씌울 수 있게 된다.
또한, Format-Table에는 자주 사용되는 정렬기능이 있다.
바로 AutoSize, column의 크기를 data의 너비에 맞춰 출력해 주는 기능이다.
Get-ChildItem C:\ | Format-Table -AutoSize
Format-List
Format-List는 자세한 정보를 표시하는 데 유용하다
아래 코드와 결과를 살펴보자
Get-Process -Name Chrome | Format-List -Property ProcessName, FileVersion, StartTime, Id
Get-Process 중Chrome의 결과를 목록형식으로 출력한다.
Format-Table과 마찬가지로 원하는 속성을 지정하여 필터링할 수 있다
아래 예시는 윈도 핫픽스 내역을 List형태로 출력한 상황이다.
Get-Hotfix | Format-List HotfixID, InstalledOn
Format-Wide
단일 항목을 출력하는데, 기본 속성이 아닌 값을 지정할 수도 있다
Get-Command -Verb Format | Format-Wide
값을 지정하여 Column의 수를 조절할 수도 있다.
Get-ChildItem | Format-Wide -Column 3
요약
Pipeline : 왼쪽의 출력을 오른쪽의 입력으로 연결해 준다
<example>
Get-Process | Stop-Process : 프로세스 종료
Get-ChildItem | Select-String : 하위 파일 속 원하는 문자열 검색
Format-Table : 표 형태이며 많은 양의 데이터 출력에 용이하다
- Autosize : 값의 크기에 맞게 Column의 너비 자동 조정
ex ) Get-ChildItem C:\ | Format-Table -AutoSize
Format-List : 리스트 형태이며 자세한 정보를 표시하는데 용이하다
ex ) Get-Process -Name Chrome | Format-List -Property ProcessName, FileVersion, StartTime, Id
Format-Wide : 단일 항목을 출력한다
- Column : 컬럼 수를 지정할 수 있다
https://sid-500.com/2018/01/25/powershell-for-beginners-part-7-the-format-commands-and-the-pipe/
'programming ⌨ > 파워쉘 PowerShell' 카테고리의 다른 글
나를 위한 PowerShell(7) : WMI 클래스 활용 (0) | 2024.03.18 |
---|---|
나를 위한 PowerShell(6) : Object 다루기 (0) | 2024.03.01 |
나를 위한 PowerShell(4) : 개인 설정과 ISE (0) | 2024.02.28 |
나를 위한 PowerShell(3) : Execution Policy와 우회 (0) | 2024.02.26 |