Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата foxbat:
почему в первом случае, который закоментирован, SID объекта выводит, а во втором нет, у того и у другого класса есть свойство SID. »
foxbat, потому что…
читать дальше »
…Вы можете получить конкретный экземпляр объекта, только указав его полный путь. Для этого нужно знать свойства, являющие квалификаторами класса, и их значения, однозначно определяющие конкретный экземпляр объекта среди прочих.

Для класса «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
Вы же пытаетесь получить экземпляр, не указывая квалификаторов объекта. Сие не верно.

Цитата foxbat:
мне нужно выявить имя пользователя ( отображаемое имя) зная его SID, »
Вы можете использовать первый пример.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:13, 23-05-2012 | #2