Доступ к квалификатору WMI
Квалификатор — это тег, предоставляющий дополнительные сведения об объекте WMI, методе или свойстве. Иногда может потребоваться доступ к данным, хранящимся в квалификаторе. Например, обычной задачей является определение того, реализует ли поставщик метод, пытаясь получить квалификатор Implement для этого метода. Дополнительные сведения см. в квалификаторах WMI и добавлении квалификатора.
Вы можете получить квалификаторы в объекте WMI в PowerShell, сначала извлекая объект, а затем проверяя квалификаторы, как и любое другое свойство.
Получение квалификатора с помощью 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".
Вы можете получить квалификаторы в экземпляре WMI в C#, сначала извлекая объект, а затем проверяя квалификаторы как коллекцию.
Получение квалификатора с помощью C# (Microsoft.System.Management)
Извлеките класс, квалификаторы которого необходимо просмотреть, создав объект 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".
Вы можете получить квалификаторы класса из CimInstance.CimClass.CimClassQualifiers, квалификаторов свойств из CimInstance.CimClassProperties и квалификаторов метода из CimInstance.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".
Вы можете получить квалификаторы для объекта WMI в C#, сначала извлекая объект, а затем проверяя квалификаторы как коллекцию.
Примечание.
System.Management — это исходное пространство имен .NET, используемое для доступа к WMI. Однако API в этом пространстве имен обычно медленнее и не масштабируются и не масштабируются по сравнению с более современными аналогами Microsoft.Management.Infrastructure .
Получение квалификатора с помощью C# (System.Management)
Извлеките объект, квалификаторы которого необходимо просмотреть с помощью ManagementObject.
using System.Management; ... ManagementObject myDisk = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
Дополнительные сведения см. в разделе "Извлечение экземпляра WMI".
Поместите квалификаторы в квалификаторDataCollection и перечислите значения QualifierData .
QualifierDataCollection myQualifiers = myDisk.Qualifiers; foreach (QualifierData qd in myQualifiers) { Console.WriteLine(qd.Name + ": " + qd.Value); } Console.ReadLine();
Дополнительные сведения см. в разделе "Извлечение экземпляра WMI".
В следующей процедуре описывается, как получить квалификатор с помощью VBScript.
Получение квалификатора с помощью VBScript
Получите объект, квалификаторы которого требуется просмотреть, как показано в следующем примере:
Set Process = GetObject("winmgmts:Win32_Process")
Наиболее распространенным способом извлечения объекта является метод GetObject. Дополнительные сведения см. в разделе "Извлечение экземпляра WMI".
Доступ к квалификаторов объекта через свойство 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++
Извлеките объект, квалификаторы которого необходимо просмотреть.
Наиболее распространенным способом извлечения объекта является вызов GetObject или GetObjectAsync. Дополнительные сведения см. в разделе "Получение данных WMI" или "Данные экземпляра".
Извлеките набор квалификатора для данного свойства с вызовом метода IWbemClassObject::GetPropertyQualifierSet или IWbemClassObject::GetMethodQualifierSet.
Доступ к квалификаторам объекта через возвращенный интерфейс IWbemQualifierSet .