Вземете CIM тип данни от свойства в WMI класове с C#

Така че успях да напиша клас, който ми позволява да имам достъп до WMI и да получа информация за класовете, включително техните методи, както и всички свойства на класовете и техните последващи методи. Не мога да намеря нищо в C# под класовете System.Management или System.Management.Instrumentation, което ми позволява достъп до CIM типовете данни на свойствата в WMI, или в основния клас, или в методи. Някой знае ли за начин, по който мога да получа тези типове данни?


person Christopher D Albert    schedule 25.11.2014    source източник
comment
CIM_DataFile Class WMI   -  person MethodMan    schedule 25.11.2014
comment
Изглежда, че нищо там не ми позволява да получа типовете данни на свойствата в WMI класове. Освен това CIM_DataFile не изглежда да стои на върха на йерархията за класовете, които разглеждам. Все още не съм експерт с WMI/CIM/WBEM, но съм почти сигурен, че това не е това, което търся.   -  person Christopher D Albert    schedule 25.11.2014


Отговори (1)


За да получите метаданните (като cimtype, стойност, име) на WMI класовете, можете да използвате PropertyData клас.

Опитайте този примерен код от MSDN

using System;
using System.Management;

public class Sample 
{    
    public static void Main() 
    {

        // Get the WMI class
        ManagementClass osClass = 
            new ManagementClass("Win32_OperatingSystem");

        osClass.Options.UseAmendedQualifiers = true;

        // Get the Properties in the class
        PropertyDataCollection properties =
            osClass.Properties;

        // display the Property names
        Console.WriteLine("Property Name: ");
        foreach (PropertyData property in properties)
        {
            Console.WriteLine(
                "---------------------------------------");
            Console.WriteLine(property.Name);
            Console.WriteLine("Description: " + property.Qualifiers["Description"].Value);
            Console.WriteLine();

            Console.WriteLine("Type: ");               
            Console.WriteLine(property.Type);

            Console.WriteLine();

            Console.WriteLine("Qualifiers: ");
            foreach(QualifierData q in 
                property.Qualifiers)
            {
                Console.WriteLine(q.Name);
            }
            Console.WriteLine();

            foreach (ManagementObject c in osClass.GetInstances())
            {
                Console.WriteLine("Value: ");
                Console.WriteLine(c.Properties[property.Name.ToString()].Value);
                Console.WriteLine();
            }
        }    
    }
person RRUZ    schedule 27.11.2014
comment
Благодаря, това проработи. Мислех, че това е свойството Properties на обекта ManagementClass, но ми беше трудно да използвам данните, съдържащи се в него. Все още нов в пространството на имената System.Management. Благодаря отново! Редактиране: - person Christopher D Albert; 28.11.2014