PowerShell 개체 필터링 및 격리

Marion Paul Kenneth Mendoza 2023년1월30일
  1. PowerShell 개체 개요
  2. PowerShell을 사용하여 출력 필터링
PowerShell 개체 필터링 및 격리

Windows PowerShell에서 Get 요청을 수행할 때 대부분의 결과는 일반적으로 PowerShell 개체(PSObject) 형식으로 만들어지고 표시됩니다. PSObjects는 나머지 스크립팅 언어와 구별되는 PowerShell의 중요한 기능 중 하나입니다.

그러나 속성 때문에 PSObject를 빠르게 검색할 수 없었으므로 검색 인덱스를 설정하기 전에 속성을 분리해야 합니다. 이 기사에서는 Windows PowerShell 개체, 검색 가능한 PS 개체의 결과 구문 분석 방법, PowerShell을 사용하여 적절한 필터링을 수행하는 방법에 대해 설명합니다.

PowerShell 개체 개요

언급했듯이 PowerShell 개체는 스크립팅 언어의 하이라이트 중 하나입니다. 각 PowerShell 개체에는 개체를 전체적으로 정의하는 특성이 있습니다.

Get-Service를 예로 들어 보겠습니다.

예제 코드:

Get-Service

출력:

Status   Name               DisplayName
------   ----               -----------
Running  AarSvc_147d22      Agent Activation Runtime_147d22
Running  AdobeARMservice    Adobe Acrobat Update Service
Running  AESMService        Intel® SGX AESM

Get-Service PowerShell 개체 내에는 Status, NameDisplayName이 속성으로 있습니다. 개체를 필터링하려면 Where-Object 명령을 사용하여 속성 사이에서 개체를 분리해야 합니다.

예를 들어 Status 유형이나 Name 유형만 얻을 수 있지만 속성을 먼저 호출하지 않고 특정 키워드를 검색할 수는 없습니다.

예제 코드:

Get-Service | Where-Object {$_.Status -match "Stopped" }

출력:

Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity

이 기사의 다음 섹션에서는 이러한 출력을 PS Object 형식 대신 문자열로 표시하고 다양한 검색 쿼리로 필터링을 수행하는 방법에 대해 설명합니다.

PowerShell을 사용하여 출력 필터링

출력을 빠르게 필터링하려면 출력을 문자열 형식으로 표시해야 합니다. 명령을 Out-String 명령으로 파이프해야 합니다.

아래 예제의 경우 다음 코드 스니펫에서 쉽게 하기 위해 변수에 할당합니다.

예제 코드:

$serviceOutput = (Get-Service | Out-String) -split "`r`n"

위의 코드는 변수에 값이 저장되어 있기 때문에 결과가 나오지 않습니다. 또한 결과 줄을 줄로 나누기 위해 약간의 문자열 연산을 수행했습니다.

필터링하면 나중에 스크립트가 전체 문자열을 하나만 표시하지 않고 줄 단위로 표시합니다.

$serviceOutput 변수에 저장된 값은 문자열 형식입니다. 키워드를 검색하려면 Select-String 명령을 검색하려는 키워드와 함께 파이프해야 합니다.

예제 코드:

$serviceOutput | Select-String Intel

출력:

Running  AESMService        Intel® SGX AESM
Stopped  Intel(R) Capabi... Intel(R) Capability Licensing Servi...
Stopped  Intel(R) TPM Pr... Intel(R) TPM Provisioning Service
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 Object