与此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
oA
和oB
是引用,因此在powershell中作为字符串出现。有没有办法在powershell中使用WMI查询获取它们所代表的对象?
答案 0 :(得分:6)
假设oA
和oB
实际上是字符串,您应该能够将这些WMI路径解析为WMI对象,如下所示:
Get-WmiObject -Namespace $namespace -Class $class | % {
$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
SystemDirectory : C:\Windows\system32
Organization :
BuildNumber : 7601
RegisteredUser : foo
SerialNumber : 00371-OEM-8310595-XXXXX
Version : 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
System.String
PS C:\> $obj2 = [wmi]$obj1.Path.Path
PS C:\> $obj2
SystemDirectory : C:\Windows\system32
Organization :
BuildNumber : 7601
RegisteredUser : foo
SerialNumber : 00371-OEM-8310595-XXXXX
Version : 6.1.7601
PS C:\> $obj2.GetType().FullName
System.Management.ManagementObject
但是你的问题很模糊,所以我不确定这个答案是否真的涵盖了你一直在问的问题。
答案 1 :(得分: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'