2013-08-07 3 views
-1

Аналогично этому question, за исключением того, что не было дано ответа в отношении основного вопроса о получении объекта из ссылки.Как получить объект WMI из ссылки на объект WMI?

Например:

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. Есть ли способ получить объект, который они представляют, используя запрос WMI в powershell?

+0

Можете ли вы дать имя класса и пространство имен, над которыми вы работаете. – JPBlanc

+0

@JPBlanc, к сожалению, я не могу –

ответ

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»

+0

Тогда, не голосуйте, мой ответ. Он показывает вам пример того, как получить ссылки. – ravikanth

+0

Я не голосовал. кто-то сделал –

+0

Спасибо @Saher. Тот, кто сделал это, должен хотя бы оставить комментарий. – ravikanth

5

Предполагая, что 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:[email protected] 
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

Ваш вопрос довольно расплывчатый, поэтому я не уверен, действительно ли этот ответ охватывает то, что вы просили.

Смежные вопросы