다음을 통해 공유


WMI 인스턴스 검색

인스턴스 검색은 WMI에서 수행할 가능성이 가장 큰 검색 절차 중 하나입니다. 기존 인스턴스를 검색하거나 명명되지 않은 새 인스턴스를 만들 수 있습니다. 기존 인스턴스에 대한 WMI 경로는 필수 매개 변수입니다. 자세한 내용은 WMI 개체 위치 설명참조하세요.

메모

인스턴스를 제공할 때 공급자가 특정 속성에 대한 값을 제공하지 못할 수 있습니다. 속성 설명에 달리 명시되지 않는 한 빈 값에서 어떤 의미도 유추할 수 없습니다. 이는 NULL 값을 가진 문자열과 혼동해서는 안 됩니다. 이 경우 값이 채워집니다. 비어 있지만 값이 있습니다. NULL.

 

PowerShell Get-WmiObject cmdlet을 호출하여 인스턴스의 로컬 복사본을 검색합니다.

PowerShell 사용하여 WMI 클래스의 인스턴스를 검색하려면

  • 클래스-filter 매개 변수를 사용하여 특정 인스턴스를 검색할 수 있습니다.

    Get-WmiObject -query "SELECT * FROM Win32_logicalDisk WHERE DeviceID = 'C:'"
    

CimInstance사용하여 검색 개체를 만든 다음 관련 키 값으로 채운 다음 CimSession.GetInstance 호출을 사용하여 해당 개체를 검색하여 C#을 사용하여 WMI 인스턴스를 검색할 수 있습니다.

C#(Microsoft.Management.Infrastructure) 사용하여 WMI 클래스의 인스턴스를 검색하려면

  1. Microsoft.Management.Infrastructure 네임스페이스를 사용하여 관련 클래스 이름과 네임스페이스를 사용하여 새 CimInstance 개체를 만듭니다.

    using Microsoft.Management.Infrastructure;
    ...
    string Namespace = @"root\cimv2";
    string className = "Win32_LogicalDisk";
    
    CimInstance myDrive = new CimInstance(className, Namespace);
    
  2. 검색하려는 인스턴스의 키 속성 이름과 값이 포함된 CimProperty 만들고 해당 속성을 클래스 개체에 추가합니다.

    myDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));
    
  3. CimSession.GetInstance 호출을 사용하여 WMI에서 개체를 검색합니다.

    CimSession mySession = CimSession.Create("localhost");
    CimInstance searchInstance = mySession.GetInstance(Namespace, myDrive);
    

System.Management 네임스페이스의 클래스를 사용하여 특정 WMI 클래스 인스턴스 또는 WMI 클래스 인스턴스 컬렉션을 검색할 수 있습니다.

메모

System.Management는 WMI에 액세스하는 데 사용된 원래의 .NET 네임스페이스입니다. 그러나 이 네임스페이스의 API는 일반적으로 느리며, 더 현대적인 Microsoft.Management.Infrastructure에 비해 확장성이 좋지 않습니다.

 

C#(System.Management) 사용하여 WMI 클래스의 인스턴스를 검색하려면

  1. ManagementPath 매개 변수를 통해 전달된 이름 및 특정 인스턴스 값을 사용하여 새 ManagementObject만들어 특정 인스턴스의 로컬 복사본을 검색합니다. 그런 다음 ManagementObject.Get명시적으로 호출하여 인스턴스 데이터를 검색할 수 있습니다.

    using System.Management;
    ...
    ManagementObject objInst = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
    objInst.Get();
    
  2. 또는 ManagementObjectSearcher사용하여 WMI 클래스를 검색한 다음 반환된 ManagementObjectCollection열거하여 WMI 클래스의 모든 인스턴스를 검색할 수 있습니다.

    using System.Management;
    ...
    ManagementObjectSearcher mgmtObjSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk");
    ManagementObjectCollection colDisks = mgmtObjSearcher.Get();
    
    foreach (ManagementObject objDisk in colDisks)
    {
       Console.WriteLine("Device ID : {0}", objDisk["DeviceID"]);
    }
    
    Console.ReadLine();
    

    인스턴스에 액세스하여 Get 메서드를 암시적으로 호출할 수 있습니다. 자세한 내용은 WMI 인스턴스일부 검색을 참조하세요.

VBScript GetObject 메서드를 호출하여 인스턴스의 로컬 복사본을 검색합니다.

VBScript 사용하여 WMI 클래스의 인스턴스를 검색하려면

  • 다음 예제와 같이 인스턴스의 개체 경로를 사용하여 GetObject 호출합니다.

    Set objinst = GetObject("WinMgmts:Win32_LogicalDisk='C:'")
    

    특정 인스턴스를 검색하려면 개체 경로의 일부로 이름을 지정해야 합니다.

C++에서 IWbemServices::GetObject호출합니다.

C++ 사용하여 WMI 클래스의 인스턴스를 검색하려면