PowerShell의 Property 대 ExpandProperty

Marion Paul Kenneth Mendoza 2022년5월31일
PowerShell의 Property 대 ExpandProperty

Windows PowerShell은 주로 개체를 표시하고 생성하는 중앙 집중식입니다. 이러한 개체는 속성이라는 특정 세부 정보로 지원됩니다.

이 문서에서는 속성이 무엇인지 설명하고 확장 속성과 구별합니다.

PowerShell의 PropertyExpandProperty

속성과 확장 속성의 차이점을 설명할 때 명확하지 않을 수 있으므로 더 시각화하는 데 도움이 되는 예를 들어 보겠습니다.

아래 코드를 실행하여 Get-Process 명령의 속성을 가져오는 것부터 시작하겠습니다.

예제 코드:

Get-Process | Format-List -Property *

위의 명령을 실행하면 PowerShell은 개체와 관련된 정보 모음 구조를 생성합니다. 아래 출력은 Get-Process 명령의 여러 속성 중 일부입니다.

출력:

Name                       : ApplicationFrameHost
Id                         : 13248
...
Modules                    : {System.Diagnostics.ProcessModule (ApplicationFrameHost.exe),
                             System.Diagnostics.ProcessModule (ntdll.dll), System.Diagnostics.ProcessModule
                             (KERNEL32.DLL), System.Diagnostics.ProcessModule (KERNELBASE.dll)...}

위의 출력 속성 중 하나를 가져와서 자세히 살펴보겠습니다.

예제 코드:

Get-Process | Select-Object -Property Modules

출력:

Modules
------
{System.Diagnostics.ProcessModule (ApplicationFrameHost.exe), System.Diagnostics.ProcessModule (ntdll.dll), System.D...

보시다시피 Modules 속성 중 하나가 출력으로 표시됩니다. 그러나 현재 읽을 수 없습니다. 위 Modules 속성의 데이터는 ArrayList에 배치됩니다.

그렇다면 이 속성을 더 읽기 쉽게 만들려면 어떻게 해야 할까요? ExpandProperty 매개변수를 사용하여 속성을 확장합니다.

ExpandProperty 매개변수는 PowerShell 개체의 기본 속성의 하위 속성을 조사하는 데 사용됩니다. PowerShell은 속성 및 확장 속성인 개체를 정의하기 위해 다단계 구조를 생성합니다.

예제 코드:

Get-Process | Select-Object -ExpandProperty Modules

출력:

   Size(K) ModuleName                                         FileName
   ------- ----------                                         --------
        84 ApplicationFrameHost.exe                           C:\WINDOWS\system32\ApplicationFrameHost.exe
        <SNIP>
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