使用ManagementObjectSearcher时,可以搜索特定属性(而不是*
)。
实例化ManagementClass(即new ManagementClass(someClass)
)时会发生什么,它是加载所有属性还是只是某种指针,并且不会加载属性?
(我也很高兴知道将ManagementObjectSearcher
与*
一起使用会发生什么,它是否会加载除属性之外的任何内容,或者就像指定所有属性一样它们是明确的吗?逻辑上,它应该只是意味着"所有",但是从here看起来不是这样。)
答案 0 :(得分:1)
实例化时没有任何反应。它只是stores the query, scope and whatever else you may have specified。 ManagementObjectSearcher
致电.Get()
,the query is executed against the current scope时。至于ManagementObjectSearcher
,实际行为取决于它是class enumeration or instance enumeration (e.g. a query)
执行查询并直接返回结果(任何属性),而类枚举将绑定到基础WMI对象without actually loading anything,直到您在某处调用.Get()
。
是否加载所有属性,或者只是某种指针
它是pointer的CIM Object Manager。仅在initialize is called with true(表示您要绑定到基础WMI对象)时加载基础对象。这是执行查询的内容。
查看对Initialize()
的各种调用,乍一看似乎只有在您请求属性或限定符时才绑定对象。调用方法不会绑定它们。
我也很高兴知道在使用带有*
的ManagementObjectSearcher时会发生什么
在执行查询之前没有任何内容。默认情况下,该对象执行shallow enumeration。除了属性之外,这可能会返回限定符,但我并不完全确定。
同样有趣(包括兄弟文章):https://technet.microsoft.com/en-us/library/cc180561.aspx
我希望这有点帮助:)