다음을 통해 공유


WMI 한정자 액세스

한정자는 WMI 개체, 메서드 또는 속성에 대한 자세한 정보를 제공하는 태그입니다. 한정자에 저장된 데이터에 액세스해야 하는 경우가 있습니다. 예를 들어 일반적인 작업은 공급자가 해당 메서드에 대한 Implemented 한정자를 검색하여 메서드를 구현하는지 확인하는 것입니다. 자세한 내용은 WMI 한정자한정자 추가를 참조하세요.

먼저 개체를 검색한 다음, 다른 속성과 마찬가지로 한정자를 검사하여 PowerShell에서 WMI 개체의 한정자를 검색할 수 있습니다.

PowerShell을 사용하여 한정자를 검색하려면

  • Get-WmiObject를 사용하여 보려는 한정자가 있는 개체를 검색한 다음, Qualifiers 속성을 통해 한정자에 액세스합니다.

    $myDisk = get-wmiObject Win32_LogicalDisk
    $myDisk.qualifiers
    
    #or
    
    get-wmiObject Win32_LogicalDisk | format-list qualifiers
    
    #or
    
    $myDisk = get-wmiObject Win32_LogicalDisk
    foreach ($qual in $myDisk.Qualifiers)
    { $qual }
    

    자세한 내용은 WMI 인스턴스 검색을 참조하세요.

먼저 개체를 검색한 다음, 한정자를 컬렉션으로 검사하여 C#에서 WMI 인스턴스의 한정자를 검색할 수 있습니다.

C#(Microsoft.System.Management)을 사용하여 한정자를 검색하려면

  1. 지정된 클래스 이름과 네임스페이스를 사용하여 CimInstance 개체를 만들어 보려는 한정자가 있는 클래스를 검색합니다.

    using Microsoft.Management.Infrastructure;
    ...
    CimSession mySession = CimSession.Create("localhost");
    CimInstance diskDrive = new CimInstance(className, Namespace);
    diskDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));
    CimInstance myDrive = mySession.GetInstance(Namespace, diskDrive);
    

    자세한 내용은 WMI 인스턴스 검색을 참조하세요.

  2. CimInstance.CimClass.CimClassQualifiers에서 클래스 한정자를, CimInstance.CimClass.CimClassProperties에서 속성 한정자를, CimInstance.CimClass.CimClassMethods에서 메서드 한정자를 검색할 수 있습니다.

    Console.WriteLine("Class: " + myDrive.ToString());
    foreach (CimQualifier qualifier in myDrive.CimClass.CimClassQualifiers)
    {
       Console.WriteLine("     " + qualifier.Name.ToString() + ": " + qualifier.Value.ToString());
    }
    
    foreach (CimPropertyDeclaration property in myDrive.CimClass.CimClassProperties)
    {
       Console.WriteLine(property.Name.ToString());
       foreach (CimQualifier qualifier in property.Qualifiers)
       {
          Console.WriteLine("     " + qualifier.Name.ToString() + ": " + qualifier.Value.ToString());
       }
    }
    
    foreach (CimMethodDeclaration method in myDrive.CimClass.CimClassMethods)
    {
       Console.WriteLine(method.Name.ToString());
       foreach (CimQualifier qualifier in method.Qualifiers)
       {
          Console.WriteLine("     " + qualifier.Name.ToString() + ": " + qualifier.Value.ToString());
       }
    }
    

    자세한 내용은 WMI 인스턴스 검색을 참조하세요.

먼저 개체를 검색한 다음, 한정자를 컬렉션으로 검사하여 C#에서 WMI 개체의 한정자를 검색할 수 있습니다.

참고

System.Management는 WMI에 액세스하는 데 사용되는 원래 .NET 네임스페이스였습니다. 그러나 이 네임스페이스의 API는 일반적으로 최신 네임스페이스인 Microsoft.Management.Infrastructure에 비해 더 느리고 스케일링 성능이 떨어집니다.

 

C#(System.Management)을 사용하여 한정자를 검색하려면

  1. ManagementObject를 사용하여 보려는 한정자가 있는 개체를 검색합니다.

    using System.Management;
    ...
    ManagementObject myDisk = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
    

    자세한 내용은 WMI 인스턴스 검색을 참조하세요.

  2. 한정자를 QualifierDataCollection에 배치하고 QualifierData 값을 통해 열거합니다.

    
    QualifierDataCollection myQualifiers = myDisk.Qualifiers;
    foreach (QualifierData qd in myQualifiers)
    {
       Console.WriteLine(qd.Name + ": " + qd.Value);
    }
    Console.ReadLine();
    

    자세한 내용은 WMI 인스턴스 검색을 참조하세요.

다음 절차에서는 VBScript를 사용하여 한정자를 검색하는 방법을 설명합니다.

VBScript를 사용하여 한정자를 검색하려면

  1. 다음 예제와 같이 보려는 한정자가 있는 개체를 검색합니다.

    Set Process = GetObject("winmgmts:Win32_Process")
    

    개체를 검색하는 가장 일반적인 방법은 GetObject 메서드를 사용하는 것입니다. 자세한 내용은 WMI 인스턴스 검색을 참조하세요.

  2. 다음 예와 같이 SWbemObject.Qualifiers_ 속성을 통해 개체의 한정자에 액세스합니다.

    for each Qualifier in Process.Qualifiers_
        WScript.Echo " " & Qualifier.Name
    next
    

다음 코드 예는 Win32_Process 개체의 모든 한정자에 액세스하는 방법을 설명합니다.

On Error Resume Next
Set Process = GetObject("winmgmts:Win32_Process")
WScript.Echo ""
WScript.Echo "Class name is", Process.Path_.Class

'Get the qualifiers
WScript.Echo ""
WScript.Echo "Qualifiers:"
WScript.Echo ""
for each Qualifier in Process.Qualifiers_
    WScript.Echo " " & Qualifier.Name
next

if Err <> 0 Then
    WScript.Echo Err.Description
    Err.Clear
End if

다음 절차에서는 C++를 사용하여 한정자를 검색하는 방법을 설명합니다.

C++를 사용하여 한정자를 검색하려면

  1. 보려는 한정자가 있는 개체를 검색합니다.

    개체를 검색하는 가장 일반적인 방법은 GetObject 또는 GetObjectAsync를 호출하는 것입니다. 자세한 내용은 WMI 클래스 또는 인스턴스 데이터 검색을 참조하세요.

  2. IWbemClassObject::GetPropertyQualifierSet 또는 IWbemClassObject::GetMethodQualifierSet 메서드를 호출하여 지정된 속성에 대한 한정자 집합을 검색합니다.

  3. 반환된 IWbemQualifierSet 인터페이스를 통해 개체의 한정자에 액세스합니다.