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
, Name
및 DisplayName
이 속성으로 있습니다. 개체를 필터링하려면 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn