336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

파이프라인은 둘 이상의 명령을 포함하여 순차적으로 실행할 수 있는 구조로, 명령 줄 인터페이스에 사용되는 중요한 개념이다.


파이프라인을 사용한 명령은 왼쪽에서 오른쪽 방향으로 각 명령을 실행한다. 즉, 이전 명령의 결과가 다음 명령의 입력이 되는 구조다.



# 시스템의 프로세스 정보를 가져와 파일로 출력
PS > Get-Process | Out-File Users\process.txt

# 출력 방향 재지정
# 결과를 파일로 출력할 때 다음처럼 기호 ">"를 사용하여 직접 파일로 출력 방향을 재 지정할 수 있다.
PS > Get-Process > process.txt


파워셸 명령의 출력 결과는 텍스트가 아니며, 항상 개체를 생성한다. 파워셸은 파이프라인의 맨 끝에 이를 때까지 해당 파이프라인에서 개체를 전달한다.


파이프라인의 끝에 남은 개체는 출력 명령의 재전송을 명시적으로 지정하지 않는 한, Out-Default라는 특수 명령으로 자동 전달된다. 이 Out-Default는 기본적으로 개체를 Out-Host로 전달하며, 화면에 텍스트로 표시한다.


* 파이프라인 개념실습


PS > Get-Process | Out-File c:\ServiceList.txt

PS > Get-Command -Noun *grid*
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Out-GridView                                       3.1.0.0    Microsoft.PowerShell.Utility

PS > Get-EventLog -LogName Security -Newest 5 | Out-GridView

둘 이상의 개체가 혼합된 파이프라인 출력
PS > Get-ChildItem -Path C:\Windows | Get-Member
   TypeName: System.IO.DirectoryInfo

Name                      MemberType     Definition
----                      ----------     ----------
LinkType                  CodeProperty   System.String LinkType{get=GetLinkType;}
Mode                      CodeProperty   System.String Mode{get=Mode;}
Target                    CodeProperty   System.Collections.Generic.IEnumerable`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] Target{get=GetTarget;}
Create                    Method         void Create(), void Create(System.Security.AccessControl.DirectorySecurity directorySecurity)

......


   TypeName: System.IO.FileInfo

Name                      MemberType     Definition
----                      ----------     ----------
LinkType                  CodeProperty   System.String LinkType{get=GetLinkType;}
Mode                      CodeProperty   System.String Mode{get=Mode;}

위 명령을 실행하면 FileInfo 와 DirectoryInfo라는 두 종류의 개체를 생성한다. 디렉토리 목록을 나열하면 파일과 폴더를 모두 포함하기 때문에, 파일 개체와 디렉토리 개체가 나오는 것이다.


파이프라인을 통해 여러 종류의 개체를 Get-Member로 보내면 각 개체별로 멤버를 표시한다. 



명령의 파이프라인 지원 방식


  • ByValue : 첫 번째 명령의 출력을 두 번째 명령의 매개변수 중 하나에 바인딩
  • ByPropertyName : ByValue 방식이 실패할 때 시도


'ⓟrogramming > PowerShell' 카테고리의 다른 글

PowerShell Script - 변수  (0) 2018.06.26
PowerShell Script - 기초  (0) 2018.06.26
개체 (Object)  (0) 2018.06.23
모듈과 스냅인  (0) 2018.06.23
PowerShell Basic  (0) 2018.06.19
블로그 이미지

뚱땡이 우주인

,