PowerShell 객체의 모든 속성을 표시하는 방법

Windows 머신과 그 구성 요소(예: 네트워크, 응용 프로그램 및 서비스)에 대한 정보를 찾기 위한 요구 사항이 있습니다. 공통 정보 모델(CIM)은 이러한 구성 요소와 그 정보를 조작하기 위한 오픈 소스 표준입니다.
Microsoft는 CIM 위에 Windows 관리 도구(WMI)라는 자신의 표준을 구현하여 컴퓨터, 서비스 및 네트워크 정보를 쿼리하고 조작합니다.
PowerShell 객체의 모든 속성을 표시하려면 Get-WmiObject
사용
Get-WmiObject
cmdlet은 시스템 관리 및 관리 작업에 특히 강력한 도구입니다. 이는 하드웨어, 설치된 소프트웨어, 네트워크 구성 등에 대한 풍부한 정보가 포함된 Windows 관리 도구(WMI) 데이터를 액세스할 수 있게 해줍니다.
Get-WmiObject
의 덜 알려졌지만 강력한 기능 중 하나는 -List
매개변수를 사용하는 것입니다. 이 옵션은 사용자가 지정된 네임스페이스 내의 모든 WMI 클래스를 검색할 수 있게 합니다.
Get-WmiObject -List
의 기본 구문은 다음과 같습니다:
Get-WmiObject -List [-Namespace <String>] [-ComputerName <String>]
주요 매개변수는 다음과 같습니다:
-Namespace <String>
: WMI 리포지토리 네임스페이스를 지정합니다. 기본값은root\cimv2
로, 가장 일반적으로 사용되는 WMI 클래스가 포함되어 있습니다.-ComputerName <String>
: 원격 컴퓨터를 대상으로 합니다. 이 매개변수가 없으면 cmdlet은 로컬 머신에서 작동합니다.
따라서 Windows 시스템 관리 프로세스가 훨씬 쉬워집니다. Get-WmiObject
cmdlet을 사용하여 사용 가능한 클래스를 확인해 보겠습니다.
Get-WmiObject -List
이 명령은 로컬 머신의 기본 네임스페이스에서 사용 가능한 모든 클래스를 출력합니다. Windows 컴퓨터의 기본 네임스페이스는 ROOT\cimv2
입니다.
출력:
기본 네임스페이스( ROOT\cimv2
) 외에 다른 네임스페이스를 지정할 수 있습니다. 기본 네임스페이스를 변경하려면 -Namespace
매개변수를 사용할 수 있습니다.
Get-WmiObject -Namespace <custom_namespace>
클래스 인스턴스/객체 정보 검색
Get-WmiObject -Class
사용은 시스템의 특정 측면에 대한 자세한 정보를 검색하는 데 주로 사용됩니다. 예를 들어, Win32_Processor
클래스를 쿼리하면 프로세서에 대한 정보를 제공하고, Win32_OperatingSystem
은 OS에 대한 세부 정보를 보여줍니다.
이 cmdlet의 -Class
매개변수는 사용자가 WMI 리포지토리 내에서 특정 클래스를 쿼리할 수 있게 해줍니다. 이 클래스는 시스템 정보를 나타내는 객체에 대한 템플릿입니다. 이 클래스는 하드웨어 세부 정보에서 구성 설정에 이르기까지 다양한 데이터를 포함합니다.
구문:
Get-WmiObject -Class <String> [-Namespace <String>] [-ComputerName <String>]
주요 매개변수는 다음과 같습니다:
-Class <String>
: 정보가 필요한 WMI 클래스를 지정합니다.-Namespace <String>
: 선택 사항입니다. WMI 리포지토리 네임스페이스를 지정합니다(기본값은root\cimv2
).-ComputerName <String>
: 선택 사항입니다. 명령을 원격 컴퓨터로 보냅니다.
사용할 수 있는 WMI 클래스는 수백 개가 있습니다. 다음과 같이 주어진 클래스에 대한 정보를 검색할 수 있습니다.
Get-WmiObject -Class Win32_computersystem
여기서 우리는 Win32_computersystem
클래스에 대한 정보를 검색하고 있습니다. 이 클래스는 컴퓨터 시스템에 대한 모든 정보를 보유한 속성을 가진 Win32_computersystem
객체를 반환합니다.
출력에 표시된 속성 수는 제한적입니다. Win32_computersystem
객체는 이보다 더 많은 속성을 포함하고 있습니다.
검색된 객체의 모든 속성을 표시하기 위해 Format-List
cmdlet을 사용할 수 있습니다.
속성을 표시하기 위해 Format-List
Cmdlet 사용
Format-List
는 다른 명령의 출력을 파이프하여 결과를 형식화할 수 있습니다. 이 cmdlet은 검색된 WMI 객체의 지정된 속성 또는 모든 속성을 읽기 쉬운 형식으로 표시할 수 있습니다.
구문:
Get-WmiObject -Class Win32_computersystem | Format-List -Property Name, Model, Manufacturer
Win32_computersystem
인스턴스에 대한 몇 가지 속성을 지정해 보겠습니다.
Format-List [-Property <PropertyName[]>]
: 출력을 목록 형식으로 형식화합니다.-Property <PropertyName[]>
: (선택 사항) 표시할 속성을 지정합니다. 생략하면 모든 속성이 표시됩니다.
출력:
Get-WmiObject
는 Win32_computersystem
객체의 기본 속성을 반환합니다. 그런 다음 출력은 파이프라인 연산자(|
)를 통해 Format-List
명령으로 전달됩니다.
우리는 Format-List
cmdlet에 -Property
매개변수를 전달할 수 있습니다. 그렇게 하면 주어진 세 개의 속성으로 최종 출력이 필터링됩니다.
가끔, 지정된 WMI 객체에 대한 모든 속성과 값을 확인하는 것이 중요할 수 있습니다. 그런 경우에는 -Property *
를 사용하여 모든 사용 가능한 속성과 해당 값을 검색해야 합니다.
*
는 모든 속성을 나타냅니다.
Get-WmiObject -Class Win32_computersystem | Format-List -Property *
출력:
출력에는 Win32_computersystem
객체에 대한 모든 속성과 값이 포함되어 있습니다. 위 명령에서 -Property
매개변수를 생략하고 작성할 수 있습니다.
Get-WmiObject -Class Win32_computersystem | Format-List *
위 명령은 위와 동일한 출력을 표시해야 합니다.
결론
이번 PowerShell의 Get-WmiObject
탐색을 통해 Windows 시스템 관리에서의 중요한 역할을 살펴보았습니다. -List
매개변수는 사용자가 모든 WMI 클래스를 열거할 수 있도록 하여 관련 데이터 소스 식별에 도움을 줍니다.
-Class
에 집중하여, 우리는 Win32_ComputerSystem
의 예를 통해 상세한 시스템 정보를 검색하는 정밀성을 시연했습니다. Format-List
가 추가되어 출력 가독성이 향상되며, 이는 광범위한 속성 목록을 처리할 때 중요합니다.
지식을 깊이 있게 하려면 Win32_Processor
또는 Win32_OperatingSystem
과 같은 다양한 WMI 클래스를 탐색하세요. 스크립트에 Get-WmiObject
를 통합하면 시스템 관리 작업을 간소화할 수 있습니다.
다재다능한 도구로서 Get-WmiObject
는 초보자와 숙련된 사용자 모두에게 적합하며, 다양한 IT 작업 및 자동화에서 PowerShell의 중요성을 나타냅니다.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.