【问题标题】:How to get WMI object from a WMI object reference?如何从 WMI 对象引用中获取 WMI 对象?
【发布时间】:2013-08-07 00:11:08
【问题描述】:

question 类似,只是没有给出关于从引用中获取对象的主要问题的答案。

例如:

PS C:\Users\admin> Get-WmiObject -Namespace $namespace -Class $class


    ...

IsActive     :  1
oA: \\.\ROOT\abc\abc\ABC:abc.xyz="tst2"
oB : \\.\ROOT\abc\abc\ABC:abc.xyz="tst3"
PSComputerName         : admin-test2

oAoB 是引用,因此在 powershell 中作为字符串出现。有没有办法可以在 powershell 中使用 WMI 查询来获取它们所代表的对象?

【问题讨论】:

  • 你能给出你正在处理的类名和命名空间吗?
  • @JPBlanc 不幸的是我不能

标签: powershell wmi wmi-query


【解决方案1】:

假设 oAoB 实际上是字符串,您应该能够将这些 WMI 路径解析为 WMI 对象,如下所示:

Get-WmiObject -Namespace $namespace -Class $class | ForEach-Object {
    $oA = [wmi]$_.oA
    $oB = [wmi]$_.oB
}

例子:

PS C:\> $namespace = 'root/cimv2' PS C:\> $class= 'Win32_OperatingSystem' PS C:\> $obj1 = Get-WmiObject -Namespace $namespace -Class $class PS C:\> $obj1 系统目录:C:\Windows\system32 组织 : 内部编号:7601 注册用户:foo 序列号:00371-OEM-8310595-XXXXX 版本:6.1.7601 PS C:\> $obj1.GetType().FullName System.Management.ManagementObject PS C:\> $obj1.Path.Path \\FOO\root\cimv2:Win32_OperatingSystem=@ PS C:\> ($obj1.Path.Path).GetType().FullName 系统字符串 PS C:\> $obj2 = [wmi]$obj1.Path.Path PS C:\> $obj2 系统目录:C:\Windows\system32 组织 : 内部编号:7601 注册用户:foo 序列号:00371-OEM-8310595-XXXXX 版本:6.1.7601 PS C:\> $obj2.GetType().FullName System.Management.ManagementObject

不过,你的问题相当模糊,所以我不确定这个答案是否真的涵盖了你一直在问的问题。

【讨论】:

    【解决方案2】:

    正如 OP 提到的,他想要的只是一个通用的答案(考虑到对象路径的性质和对键的依赖性,这又很难),我给出了另一个使用 WMI 查询关联器的示例。

    $query = "ASSOCIATORS OF {Win32_Account.Name='DemoGroup2',Domain='DomainName'} WHERE Role=GroupComponent ResultClass=Win32_Account"
    Get-WMIObject -Query $query | Select Name
    

    如果你需要使用上面的例子,你需要先找出关键属性是什么,并在对象路径中使用它。

    -----原来的答案-----

    什么命名空间?什么级别?您需要使用关联和/或引用来检索它。除非我们知道确切的对象路径,否则很难给出一个通用的答案。例如,

    $query = "REFERENCES OF {Win32_Service.Name='Netlogon'} WHERE ClassDefsOnly"
    Get-WMIObject -Query $query
    

    上述查询将给出 Win32_Service 的所有引用,对象路径为 ServiceName='NetLogon'

    【讨论】:

    • 那么,不要拒绝我的回答。它向您展示了如何获取参考的示例。
    • 谢谢@Saher。这样做的人至少应该发表评论。
    • 谢谢。明天我会试试你的建议,让你知道
    • 我无法让它工作。我不知道用什么来代替我正在使用的课程
    • 除非我们知道类和关键属性是什么,否则我们无能为力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多