如何从 WMI 对象引用中获取 WMI 对象? [英] How to get WMI object from a WMI object reference?

查看:67
本文介绍了如何从 WMI 对象引用中获取 WMI 对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

类似于这个问题,除了关于从引用中获取对象的主要问题没有给出答案.

例如:

PS C:\Users\admin>Get-WmiObject -Namespace $namespace -Class $class...是活动的:1oA: \\.\ROOT\abc\abc\ABC:abc.xyz="tst2"oB : \\.\ROOT\abc\abc\ABC:abc.xyz="tst3"PSComputerName : admin-test2

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

解决方案

假设 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 $classPS C:\>$obj1系统目录:C:\Windows\system32组织 :内部版本号:7601注册用户:foo序列号:00371-OEM-8310595-XXXXX版本:6.1.7601PS C:\>$obj1.GetType().FullName系统.管理.管理对象PS C:\>$obj1.Path.Path\\FOO\root\cimv2:Win32_OperatingSystem=@PS C:\>($obj1.Path.Path).GetType().FullName系统字符串PS C:\>$obj2 = [wmi]$obj1.Path.PathPS C:\>$obj2系统目录:C:\Windows\system32组织 :内部版本号:7601注册用户:foo序列号:00371-OEM-8310595-XXXXX版本:6.1.7601PS C:\>$obj2.GetType().FullName系统.管理.管理对象

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

Similar to this question except that no answer was given with regards to the main question of getting an object from reference.

For example:

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 and oB are references and therefore come up as strings in powershell. Is there a way I can get the object they represent using WMI query in powershell?

解决方案

Assuming that oA and oB actually are strings you should be able to resolve these WMI paths to WMI objects like this:

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

Example:

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

Your question is rather vague, though, so I'm not sure if this answer actually covers what you've been asking.

这篇关于如何从 WMI 对象引用中获取 WMI 对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆