다음을 통해 공유


WMI 한정자에 접근하기

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

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

PowerShell을 사용하여 한정자를 검색하는 방법

  • Get-WmiObject를 사용하여 한정자를 보려는 개체를 검색하고, 그 후 한정자 속성을 통해 한정자에 액세스하십시오.

    $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 네임스페이스의 API에 비해 성능이 떨어지고 확장성이 좋지 않습니다.

 

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 인터페이스를 통해 개체의 한정자에 액세스할 수 있습니다.