PowerShell에서 Where-Object 명령 사용

Marion Paul Kenneth Mendoza 2023년6월21일
  1. PowerShell의 Where-Object Cmdlet
  2. PowerShell에서 스크립트 블록으로 필터 조건 만들기
  3. PowerShell에서 매개변수로 필터 조건 만들기
  4. 여러 조건문 사용
PowerShell에서 Where-Object 명령 사용

개체 모음에서 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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

관련 문장 - PowerShell Statement