Я не уверен, почему вы упомянули PowerShell; Вы можете сделать это в чистом C # и WMI (то есть в пространстве имен System.Management
).
Чтобы получить список всех классов WMI, используйте запрос SELECT * FROM Meta_Class
:
using System.Management;
...
try
{
EnumerationOptions options = new EnumerationOptions();
options.ReturnImmediately = true;
options.Rewindable = false;
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\cimv2", "SELECT * FROM Meta_Class", options);
ManagementObjectCollection classes = searcher.Get();
foreach (ManagementClass cls in classes)
{
Console.WriteLine(cls.ClassPath.ClassName);
}
}
catch (ManagementException exception)
{
Console.WriteLine(exception.Message);
}