CIM 및 WMI를 사용하여 로컬 리포지토리 네임스페이스 및 클래스 나열

완료됨

네임스페이스는 CIM(Common Information Model) 및 WMI(Windows Management Instrumentation)를 사용하여 쿼리할 수 있는 개체 클래스를 구성합니다. 네임스페이스를 나열하여 잠재적으로 유용한 개체 클래스를 식별할 수 있습니다.

Get-WmiObject cmdlet을 사용하면 로컬 또는 원격 컴퓨터의 모든 네임스페이스를 나열할 수 있습니다. 로컬 컴퓨터의 네임스페이스를 나열하려면 다음 명령을 실행합니다.

Get-WmiObject -Namespace root -List -Recurse | Select -Unique __NAMESPACE

참고

이전 명령을 실행할 때 오류가 발생하는 경우 승격된 Windows PowerShell 프롬프트를 사용하고 있는지 확인합니다. 일부 네임스페이스에는 관리자만 액세스할 수 있는 보안 요구 사항이 있습니다.

Get-CimInstance cmdlet을 사용하여 특정 네임스페이스 내의 네임스페이스를 나열할 수 있지만 단일 명령에서 사용 가능한 모든 네임스페이스를 나열하는 -Recurse 매개 변수는 제공하지 않습니다. 그러나 CIM cmdlet은 파일 시스템 경로를 입력할 때 탭 완성을 사용하는 방법과 유사하게 -Namespace 매개 변수에 대해 탭 완성을 지원합니다. 네임스페이스에 탭 완성을 사용하는 것은 사용 가능한 네임스페이스를 탐색하는 데 사용할 수 있는 탐색 방법입니다.

이 모듈에서는 Windows 운영 체제 및 컴퓨터 하드웨어와 관련된 모든 클래스를 포함하는 root\CIMv2 네임스페이스를 주로 사용합니다. root\CIMv2는 기본 네임스페이스입니다. 따라서 별도로 명시하지 않는 한 인스턴스를 쿼리할 때 네임스페이스를 지정할 필요가 없습니다.

클래스 나열

대부분의 경우 CIM(Common Information Model) 및 WMI(Windows Management Instrumentation)를 사용할 때 특정 작업을 수행하려고 합니다. 해당 작업을 수행하는 방법을 파악하기 위해 일반적으로 인터넷 검색을 수행하여 비슷한 작업을 수행하는 샘플 코드를 제공한 사람이 있는지 알아봅니다. 그런 다음, 해당 코드를 용도에 맞게 수정하고 사용 중인 CIM 또는 WMI 클래스를 식별할 수 있습니다. 유용한 샘플 코드를 찾을 수 없는 경우에는 사용 가능한 클래스를 찾아 적합한 항목이 있는지 확인할 수 있습니다.

CIM 및 WMI를 통해 사용 가능한 클래스를 탐색하려면 네임스페이스에서 사용할 수 있는 클래스를 나열하면 됩니다. 예를 들어 root\CIMv2 네임스페이스의 모든 클래스를 나열하려면 다음 명령 중 하나를 실행합니다.

Get-WmiObject -Namespace root\CIMv2 -List
Get-CimClass -Namespace root\CIMv2

Windows PowerShell은 클래스를 특정 순서로 나열하지 않습니다. 쿼리의 출력을 사전순으로 정렬하면 클래스를 좀 더 쉽게 찾을 수 있습니다. 예를 들어 프로세스를 나타내지만 클래스 이름은 모르는 클래스를 찾으려는 경우 정렬된 목록의 "P" 섹션을 빠르게 참조하여 process라는 단어를 검색할 수 있습니다. root\CIMv2 네임스페이스에서 사전순 클래스 목록을 생성하려면 다음 명령 중 하나를 실행합니다.

Get-WmiObject -Namespace root\cimv2 -List | Sort Name
Get-CimClass -Namespace root\CIMv2 | Sort CimClassName

참고

root\CIMv2 네임스페이스에 Win32_로 시작하는 클래스 이름과 CIM_으로 시작하는 클래스 이름이 있을 것을 알 수 있습니다. 이 네임스페이스는 이들 접두사만 사용하는 유일한 네임스페이스입니다. CIM_으로 시작하는 클래스는 일반적으로 추상 클래스입니다. Win32_로 시작하는 클래스는 일반적으로 추상 클래스의 보다 구체적인 버전이며 Windows 운영 체제와 관련된 정보를 포함합니다.

많은 관리자가 리포지토리를 사용하기가 어렵다고 생각합니다. 특정 작업을 수행해야 하는 클래스를 찾는 것은 추측 게임입니다. 클래스의 이름을 추측한 다음, 클래스 목록을 검토하여 정확한지 확인해야 합니다. 그 다음, 필요한 정보가 클래스에 포함되어 있는지 여부를 확인하기 위해 해당 클래스를 쿼리해야 합니다. root\CIMv2 네임스페이스 외부의 많은 클래스가 잘 문서화되어 있지 않으므로 이 방법이 가장 좋습니다.

리포지토리 클래스의 중앙 디렉터리는 없습니다. 리포지토리에는 검색 시스템이 포함되어 있지 않습니다. Windows PowerShell을 사용하여 리포지토리 클래스 이름의 기본 키워드 검색을 수행할 수 있습니다. 예를 들어 root\CIMv2 네임스페이스에서 클래스 이름에 network가 있는 모든 클래스를 찾으려면 다음 명령을 사용합니다.

Get-CimClass *network* | Sort CimClassName

그러나 이 기술은 해당 정보가 리포지토리에 저장되지 않으므로 클래스 설명을 검색하는 기능을 제공하지 않습니다. 인터넷 검색 엔진은 사용 가능한 클래스 이름을 검색하는 보다 실행 가능한 대안을 제공합니다.

참고

두 개의 밑줄(__)로 시작하는 일부 클래스 이름을 확인할 수 있습니다. WMI 및 CIM이 내부적으로 사용하는 시스템 클래스입니다.

참고

WMI 및 CIM 클래스를 탐색하는 데 사용할 수 있는 몇 가지 무료 그래픽 도구가 있습니다. 이러한 도구를 찾으려면 검색 엔진을 사용하여 WMI 탐색기 또는 CIM 탐색기를 검색합니다.

시스템 관리자에게 문제가 될 수 있는 특정 WMI 클래스 개체가 하나 있습니다. 바로 Win32_Product 클래스입니다. 이 클래스를 사용하면 설치된 소프트웨어를 쿼리할 수 있지만 결과를 반환하는 데 시간이 오래 걸리고 성능에 부정적인 영향을 줍니다. 이 클래스를 쿼리할 때 공급자는 쿼리가 수행될 때 시스템의 모든 MSI 패키지에 대해 Windows Installer(MSI) 재구성을 수행합니다. Microsoft는 Win32reg_AddRemovePrograms 클래스를 대안으로 사용하도록 권장하지만 이 클래스는 Microsoft Endpoint Configuration Manager 클라이언트가 설치된 시스템에서만 사용할 수 있습니다.

추가 자료: 이 MSI 재구성 문제에 대한 Microsoft 지원 페이지는 이벤트 로그 메시지는 Windows Installer가 설치된 모든 애플리케이션을 다시 구성했음을 나타냅니다.에서 찾을 수 있습니다.