{"id":198,"date":"2013-10-26T17:21:10","date_gmt":"2013-10-26T17:21:10","guid":{"rendered":"http:\/\/wawszczak.pr0.pl\/?p=198"},"modified":"2014-07-04T11:04:03","modified_gmt":"2014-07-04T11:04:03","slug":"pobieranie-obiekt%c3%b3w-wmi-osadzonych-wewn%c4%85trz-innych-jako-zmienne-klas-c","status":"publish","type":"post","link":"https:\/\/wawszczak.pr0.pl\/en\/2013\/10\/26\/pobieranie-obiekt%c3%b3w-wmi-osadzonych-wewn%c4%85trz-innych-jako-zmienne-klas-c\/","title":{"rendered":"Retrieving properties embedded in WMI object (C#)"},"content":{"rendered":"<p>Hello,<br \/>\nToday fast review of rules for querying for embedded object within another WMI object.<br \/>\nBasic WMI search query returns collection of <code class=\"codecolorer csharp default\"><span class=\"csharp\"><span class=\"kw5\">System<\/span><span class=\"sy0\">.<\/span><span class=\"me1\">Management<\/span><span class=\"sy0\">.<\/span><span class=\"me1\">ManagementObjectCollection<\/span><\/span><\/code>.  This collection contains a set of <code class=\"codecolorer csharp default\"><span class=\"csharp\"><span class=\"kw5\">System<\/span><span class=\"sy0\">.<\/span><span class=\"me1\">Management<\/span><span class=\"sy0\">.<\/span><span class=\"me1\">ManagementObject<\/span><\/span><\/code>. Each of them has filled in only a subset of all possible properties. This are those, what are simple WMI data types (String, Int, Bool). When we want to retrieve complex Class based property, the embedded object is missing and the code returns NULL value.<br \/>\nTo archieve filling in these object fields, there is class method called <code class=\"codecolorer csharp default\"><span class=\"csharp\"><span class=\"kw1\">Get<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><\/span><\/code><br \/>\nThis method is described <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/k18t5sbs(v=vs.90).aspx\">here<\/a>. It can be used for quick retrieval of single object, but also it is used during handling any modification of object.<br \/>\nThe side effect is filling in the whole object including any embedded structured complex types instances.<br \/>\nFollowing code ilustrates the case:<\/p>\n<div class=\"codecolorer-container csharp default\" style=\"overflow:auto;white-space:nowrap;width:600px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/><\/div><\/td><td><div class=\"csharp codecolorer\"><span class=\"co1\">\/\/ for kerberos konstrained delegation<\/span><br \/>\nConnectionOptions wmiOptions <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.google.com\/search?q=new+msdn.microsoft.com\"><span class=\"kw3\">new<\/span><\/a> ConnectionOptions<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nwmiOptions<span class=\"sy0\">.<\/span><span class=\"me1\">Authentication<\/span> <span class=\"sy0\">=<\/span> AuthenticationLevel<span class=\"sy0\">.<\/span><span class=\"me1\">PacketPrivacy<\/span><span class=\"sy0\">;<\/span> <br \/>\nwmiOptions<span class=\"sy0\">.<\/span><span class=\"me1\">Impersonation<\/span> <span class=\"sy0\">=<\/span> ImpersonationLevel<span class=\"sy0\">.<\/span><span class=\"me1\">Impersonate<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"co1\">\/\/ for connection to remote host<\/span><br \/>\nManagementScope scope <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.google.com\/search?q=new+msdn.microsoft.com\"><span class=\"kw3\">new<\/span><\/a> ManagementScope<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;<span class=\"es0\">\\\\<\/span><span class=\"es0\">\\&quot;<\/span> + serverName + &quot;<\/span>\\\\root\\\\SMS\\\\Site_<span class=\"st0\">&quot; + siteCode, wmiOptions);<br \/>\n\/\/ for performing query to wmi<br \/>\nWqlObjectQuery wmiQuery = new WqlObjectQuery(query);<br \/>\nManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, wmiQuery);<br \/>\n\/\/ performing search itself<br \/>\nManagementObjectCollection Colls = searcher.Get();<br \/>\nManagementBaseObject[] rules = null;<br \/>\nManagementObject coll = null;<br \/>\n\/\/retrieving objects from collection, in this example we assume only one result<br \/>\nforeach (ManagementObject o in Colls)<br \/>\n{<br \/>\n&nbsp; &nbsp;coll = o;<br \/>\n&nbsp; &nbsp;\/\/ coll[&quot;<\/span>CollectionRules<span class=\"st0\">&quot;] == null<br \/>\n&nbsp; &nbsp;coll.Get();<br \/>\n&nbsp; &nbsp;\/\/ after previous call it is filled in<br \/>\n&nbsp; &nbsp;rules = (ManagementBaseObject[])o[&quot;<\/span>CollectionRules<span class=\"st0\">&quot;];<br \/>\n}<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Hello, Today fast review of rules for querying for embedded object within another WMI object. Basic WMI search query returns collection of System.Management.ManagementObjectCollection. This collection contains a set of System.Management.ManagementObject. Each of them has filled in only a subset of &hellip; <a href=\"https:\/\/wawszczak.pr0.pl\/en\/2013\/10\/26\/pobieranie-obiekt%c3%b3w-wmi-osadzonych-wewn%c4%85trz-innych-jako-zmienne-klas-c\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45,44],"tags":[46,48,47],"class_list":["post-198","post","type-post","status-publish","format-standard","hentry","category-programming","category-sccm-2012","tag-c","tag-sccm","tag-wmi"],"_links":{"self":[{"href":"https:\/\/wawszczak.pr0.pl\/en\/wp-json\/wp\/v2\/posts\/198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wawszczak.pr0.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wawszczak.pr0.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wawszczak.pr0.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wawszczak.pr0.pl\/en\/wp-json\/wp\/v2\/comments?post=198"}],"version-history":[{"count":11,"href":"https:\/\/wawszczak.pr0.pl\/en\/wp-json\/wp\/v2\/posts\/198\/revisions"}],"predecessor-version":[{"id":226,"href":"https:\/\/wawszczak.pr0.pl\/en\/wp-json\/wp\/v2\/posts\/198\/revisions\/226"}],"wp:attachment":[{"href":"https:\/\/wawszczak.pr0.pl\/en\/wp-json\/wp\/v2\/media?parent=198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wawszczak.pr0.pl\/en\/wp-json\/wp\/v2\/categories?post=198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wawszczak.pr0.pl\/en\/wp-json\/wp\/v2\/tags?post=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}