如何从 WMI 对象引用中获取 WMI 对象? [英] How to get WMI object from a WMI object reference?
问题描述
类似于这个问题,除了关于从引用中获取对象的主要问题没有给出答案.
例如:
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
oA
和 oB
是引用,因此在 powershell 中作为字符串出现.有没有办法在 powershell 中使用 WMI 查询获取它们代表的对象?
假设 oA
和 oB
实际上是字符串,您应该能够将这些 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屋!