C # .NET ManagementObjectSearcher Query - PullRequest
       25

C # .NET ManagementObjectSearcher Query

1 голос
/ 05 октября 2010

Приложение C # .NET 2.0 выполняет два запроса, используя класс ManagementObjectSearcher:

_searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSWmi_PnPInstanceNames");

_searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSSerial_PortName");

Я хотел бы объединить их, чтобы _searcher содержал все результаты обоих запросов.Однако, когда я пытаюсь это сделать ...

_searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSWmi_PnPInstanceNames AND MSSerial_PortName");

... выдается исключение "Неверный запрос".У кого-нибудь есть идеи относительно того, как я могу заставить это работать?Спасибо.

Ответы [ 2 ]

1 голос
/ 05 октября 2010

К сожалению, язык запросов WMI не поддерживает операции join или union, , поэтому вам нужно запускать эти запросы отдельно (так как выбор из разных хранилищ объектов).

Язык запросов WMI (WQL) является подмножеством ANSI SQL - с некоторыми семантическими изменениями. Не все, что вы можете сделать в SQL, возможно в WQL. Вы можете увидеть поддерживаемые WMI конструкции запросов онлайн на MSDN.

0 голосов
/ 17 декабря 2012

Я могу выполнить запрос с несколькими таблицами, как показано ниже

 ManagementObjectSearcher searcher; 
 query = new ObjectQuery(string.Format("Select SMS_CollectToSubCollect.subCollectionID,SMS_Collection.Name " +
                                        " from SMS_CollectToSubCollect, SMS_Collection " +
                                        " where  subCollectionID in " +
                                        " (select CollectionID  from SMS_Collection where name='{0}') " +
                                        " and SMS_Collection.CollectionID  =  SMS_CollectToSubCollect.parentCollectionID " , name));
foreach (ManagementObject queryObj in searcher.Get())
{
//TODO:read values from results 
 }

Надеюсь, это поможет

...