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 클래스의 인스턴스를 검색하려면
Microsoft.Management.Infrastructure 네임스페이스를 사용하여 관련 클래스 이름과 네임스페이스를 사용하여 새 CimInstance 개체를 만듭니다.
using Microsoft.Management.Infrastructure; ... string Namespace = @"root\cimv2"; string className = "Win32_LogicalDisk"; CimInstance myDrive = new CimInstance(className, Namespace);
검색하려는 인스턴스의 키 속성 이름과 값이 포함된 CimProperty 만들고 해당 속성을 클래스 개체에 추가합니다.
myDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));
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 클래스의 인스턴스를 검색하려면
ManagementPath 매개 변수를 통해 전달된 이름 및 특정 인스턴스 값을 사용하여 새 ManagementObject만들어 특정 인스턴스의 로컬 복사본을 검색합니다. 그런 다음 ManagementObject.Get명시적으로 호출하여 인스턴스 데이터를 검색할 수 있습니다.
using System.Management; ... ManagementObject objInst = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'"); objInst.Get();
또는 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 클래스의 인스턴스를 검색하려면
IWbemServices::GetObject 또는 IWbemServices::GetObjectAsync호출하여 인스턴스의 로컬 복사본을 검색합니다. 개체에 대한 WMI 경로를 포함해야 합니다.
이름에서 알 수 있듯이 GetObjectAsync 인스턴스를 비동기적으로 검색하는 반면 GetObject 인스턴스를 동기적으로 검색합니다. 비동기 검색을 사용하려면 IWbemObjectSink 인터페이스를 구현해야 합니다.