Geek School PowerShell에서 서식 지정, 필터링 및 비교 학습
Geek School의이 에디션에서는 파이프 라인의 개체 형식 지정, 필터링 및 비교를 살펴 봅니다..
시리즈의 이전 기사를 읽으십시오.
- PowerShell을 사용하여 Windows를 자동화하는 방법 배우기
- PowerShell에서 Cmdlet을 사용하는 방법 학습
- PowerShell에서 개체를 사용하는 방법 학습
그리고 일주일 내내 나머지 시리즈에 계속해서 관심을 가져주세요..
기본 서식
PowerShell을 처음 시작했을 때 나는 모든 것이 마술이라고 생각했지만 사실 진실은 후드 아래에서 무슨 일이 벌어지고 있는지 이해하는 데 약간의 시간이 걸립니다. PowerShell 포맷 시스템에서도 마찬가지입니다. 실제로 Get-Service cmdlet을 실행하면 생성 된 출력에 상태, 이름 및 표시 이름의 세 가지 속성 만 표시됩니다..
그러나 Get-Service를 Get-Member로 파이프하면 ServiceController 객체에는이 세 가지 속성 이외의 많은 것이 있으므로 참조하십시오.?
대답은 숨겨진 파일에 있으며 대부분의 기본 제공 cmdlet이 출력을 표시하는 방식을 정의합니다. 이해를 얻으려면 쉘에 다음을 입력하고 Enter 키를 누릅니다..
메모장 C : \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml
메모장의 찾기 기능을 사용하면 ServiceController 유형을 검색하여 Get-Service cmdlet의 출력을 자세히 설명하는 섹션으로 빠르게 건너 뛸 수 있습니다.
갑자기 PowerShell이 파이프 라인에서 ServiceController 유형의 객체를 포맷하고 Status, Name 및 DisplayName의 세 열이있는 테이블을 만드는 중임을 알 수 있습니다. 그러나 다루고있는 유형에 해당 파일에 항목이 없거나 다른 형식 파일이있는 경우에는 어떻게해야합니까? 그럼, 실제로는 아주 간단합니다. 파이프 라인에서 나오는 개체에 5 개 이상의 속성이 있으면 PowerShell은 개체의 모든 속성을 목록에 표시합니다. 속성이 5 개 미만인 경우 테이블에 표시합니다..
데이터 서식 지정
개체 또는 형식의 기본 서식이 만족스럽지 않으면 자신의 서식을 롤백 할 수 있습니다. 이 작업을 수행하기 위해 알아야하는 cmdlet 세 개가 있습니다..
- 형식리스트
- 형식 - 표
- 형식 - 와이드
형식 - 와이드 단순히 객체 컬렉션을 가져 와서 각 객체의 단일 속성을 표시합니다. 기본적으로 name 속성을 찾습니다. 객체에 이름 속성이 없으면 속성이 사전 순으로 정렬되면 객체의 첫 번째 속성이 사용됩니다.
Get-Service | 형식 - 와이드
보시다시피, 기본 설정은 두 개의 열로되어 있지만 사용하려는 속성과 표시 할 열의 수를 지정할 수 있습니다.
Get-Service | 서식 - 넓은 - 속성 DisplayName - 열 6
기본적으로 테이블 형식으로 서식이 지정된 경우 Format-List cmdlet을 사용하여 목록보기로 전환 할 수 있습니다. Get-Process cmdlet의 출력을 살펴 보겠습니다..
이 표 형식의보기는 실제로 이러한 종류의 정보에 매우 적합하지만 목록 형식으로 보려고합니다. 우리가해야 할 일은 형식리스트.
Get-Process | 형식리스트
보시다시피 기본적으로 목록에 표시된 항목은 네 개뿐입니다. 개체의 모든 속성을 보려면 와일드 카드 문자를 사용할 수 있습니다.
Get-Process | Format-List -Property *
또는 원하는 속성 만 선택할 수 있습니다..
Get-Process | Format-List - 등록 정보 이름, ID
형식 - 표, 반면에 데이터를 취하여 테이블로 변환합니다. Get-Process의 데이터는 이미 테이블 형식이므로 테이블에 표시 할 속성을 쉽게 선택할 수 있습니다. AutoSize 매개 변수를 사용하여 모든 데이터가 단일 화면에 맞도록했습니다..
Get-Process | 형식 - 테이블 이름, id - 자동 크기 조정
필터링 및 비교
개체 기반 파이프 라인을 사용하는 가장 좋은 방법 중 하나는 Where-Object cmdlet을 사용하여 모든 단계에서 개체를 파이프 라인 밖으로 필터링 할 수 있다는 것입니다..
Get-Service | Where-Object $ _. 상태 - eq "실행 중"
객체를 사용하는 것은 실제로 매우 간단합니다. $ _는 현재 파이프 라인 개체를 나타내며 필터링 할 속성을 선택할 수 있습니다. 여기서 Status 속성이 Running과 같은 객체 만 유지합니다. 필터링 스크립트 블록에서 사용할 수있는 몇 가지 비교 연산자가 있습니다.
- eq (같음)
- neq (같지 않음)
- gt (그 이상)
- ge (크거나 같음)
- lt (보다 작음)
- le (보다 작거나 같음)
- like (와일드 카드 문자열 매치)
전체 목록 및 추가 정보는 about_comparison 개념 도움말 파일에서 볼 수 있지만 Where-Obeject 구문에 익숙해지는 데 다소 시간이 걸립니다. 이번에는 그게 다야.!