PowerShell에서 Where-Object 명령 사용
-
PowerShell의
Where-Object
Cmdlet - PowerShell에서 스크립트 블록으로 필터 조건 만들기
- PowerShell에서 매개변수로 필터 조건 만들기
- 여러 조건문 사용
개체 모음에서 Windows PowerShell 속성으로 작업할 때 필요한 모든 특정 항목을 필터링하는 방법이 필요한 경우가 있습니다. 따라서 Windows PowerShell Where-Object
cmdlet을 사용하는 방법을 아는 것은 Windows PowerShell 기술에 필수적인 기술입니다.
Where-Object
cmdlet은 개체를 필터링하는 유용한 명령입니다. 이 기사에서는 Where-Object
명령, 해당 구문 및 여러 조건문의 사용을 구성하는 여러 방법을 배웁니다.
PowerShell의 Where-Object
Cmdlet
Windows PowerShell Where-Object
cmdlet의 유일한 목표는 명령 출력을 필터링하고 인쇄하려는 특정 정보를 반환하는 것입니다.
요약하자면 Where-Object
cmdlet은 필터입니다. 이를 통해 True
또는 False
를 반환하는 조건을 구성할 수 있습니다. 상황의 결과에 따라 cmdlet은 출력을 반환하거나 반환하지 않습니다.
스크립트 블록과 매개변수라는 두 가지 방법으로 해당 조건을 만들 수 있습니다.
PowerShell에서 스크립트 블록으로 필터 조건 만들기
스크립트 블록은 Windows PowerShell의 중요한 구성 요소입니다. 그들은 스크립팅 언어 전체에 걸쳐 수백 곳에서 사용됩니다. 스크립트 블록은 코드를 분류하고 다양한 위치에서 실행하는 익명의 기능입니다.
예제 스크립트 블록:
{$_.StartType -EQ 'Automatic'}
그런 다음 Windows PowerShell 파이프라인을 사용하여 해당 개체를 Where-Object
cmdlet으로 파이프하고 FilterScript
매개 변수를 사용할 수 있습니다. FilterScript
매개변수는 스크립트 블록을 허용하므로 아래 예와 같이 각 개체의 속성이 특정 값과 같은지 여부를 확인하는 조건을 만들 수 있습니다.
예제 코드:
Get-Service | Where-Object -FilterScript {$_.StartType -eq 'Automatic'}
Where-Object
cmdlet과 함께 위치 매개변수를 사용하고 FilterScript
매개변수 이름은 포함하지 않습니다. 대신 더 빠르고 깔끔한 스크립팅 방법을 위해 Where-Object {$_.StartType -eq 'Automatic'}
과 같은 스크립트 블록만 제공합니다.이러한 유형의 구문은 이 특정 시나리오에서 작동하지만 중괄호({}
)가 있는 스크립트 블록의 개념은 경험이 적은 Windows PowerShell 사용자가 코드를 읽기 어렵게 만들고 더 어렵게 만듭니다. 이 가독성 문제로 인해 Windows PowerShell 팀은 매개변수를 도입했습니다.
PowerShell에서 매개변수로 필터 조건 만들기
Windows PowerShell 3.0에 도입된 매개 변수는 작성 방식에 보다 자연스러운 흐름을 제공합니다. 동일한 이전 예제를 사용하여 매개변수를 사용하여 특정 출력을 필터링해 보겠습니다.
예제 코드:
Get-Service | Where-Object -Property StartType -eq 'Automatic'
위의 명령은 스크립트 블록을 사용하는 대신 개체 속성을 Property 매개 변수에 대한 매개 변수 값으로 지정합니다. 또한 -eq
연산자는 이제 매개변수이므로 Automatic
값을 전달할 수 있습니다.
이러한 방식으로 매개변수를 사용하면 이제 스크립트 블록이 필요하지 않습니다. 그러나 Microsoft는 보다 깔끔한 스크립팅 방법으로 매개변수를 도입했지만 이 기사의 다음 섹션에서 논의할 스크립트 블록을 사용해야 하는 훌륭한 이유가 있습니다.
여러 조건문 사용
연산자(예: -and
또는 -or
)를 사용하여 둘 이상의 조건을 결합하여 스크립트 블록을 사용하여 평가할 수 있습니다. 그러나 각 조건을 성공적으로 평가하려면 하위 표현식이라는 특정 Windows PowerShell 구성 요소를 사용해야 합니다.
Windows PowerShell에서는 하위 표현식을 사용하여 Where-Object
와 같은 필터링 구문 내에서 표현식을 실행할 수 있습니다. 실행하는 조건문을 괄호(()
)로 묶어 이를 수행합니다.
예제 코드:
Get-Process | Where-Object {($_.CPU -gt 2.0) -and ($_.CPU -lt 10)}
예제 스크립트 블록:
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
334 21 18972 26384 5.23 3808 0 AnyDesk
635 34 13304 51264 9.56 4140 5 notepad
726 36 12820 51196 4.69 12088 5 notepad
802 46 18356 65088 7.98 10784 5 OneDrive
340 18 6472 26436 3.44 1252 5 RuntimeBroker
698 34 14672 44484 3.63 3284 5 RuntimeBroker
323 19 5732 23432 4.00 11200 5 RuntimeBroker
560 18 6440 27752 4.63 8644 5 sihost
632 31 21524 69972 2.81 6392 5 StartMenuExperienceHost
390 18 9756 30832 3.94 3084 5 svchost
523 24 8768 36312 2.17 6300 5 svchost
524 17 6416 21036 4.42 10932 5 SynTPEnh
525 22 15336 38904 3.41 2192 5 TextInputHost
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn