…Вы можете получить конкретный экземпляр объекта, только указав его полный путь. Для этого нужно знать свойства, являющие квалификаторами класса, и их значения, однозначно определяющие конкретный экземпляр объекта среди прочих.
Для класса «Win32_SID» квалификатором является именно свойство «.SID». Потому Вы можете получить экземпляр объекта, указав свойство «.SID»:
Код:
Option Explicit
Dim strComputer
Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObjectEx
strComputer = "."
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set objSWbemObjectEx = objSWbemServicesEx.Get("Win32_SID='S-1-5-21-1004336348-1979792683-839522115-500'")
With objSWbemObjectEx
WScript.Echo .AccountName, .ReferencedDomainName, .SID
End With
Set objSWbemObjectEx = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
Цитата:
Код:
Администратор S-1-5-21-1004336348-1979792683-839522115-500
|
Для класса же «Win32_Account» квалификаторами является пара свойств: «.Domain» и «.Name». Соответственно, чтобы получить конкретный экземпляр класса «Win32_Account», Вы обязаны указать оба этих свойства в методе «.Get», например:
Код:
Option Explicit
Dim strComputer
Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObjectEx
strComputer = "."
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set objSWbemObjectEx = objSWbemServicesEx.Get("Win32_UserAccount.Domain='MachineName',Name='Администратор'")
With objSWbemObjectEx
WScript.Echo .Name, .Domain, .SID
End With
Set objSWbemObjectEx = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
Вы же пытаетесь получить экземпляр, не указывая квалификаторов объекта. Сие не верно.