1

Тема: VBS: Как получить "Выводимое имя|Display name" у пользователя домена?

Есть скрипт

Dim strDomain, strGroup
Dim objGroup, objItem, objWsNet
strGroup = "Domain users"
Set objWsNet = CreateObject("WScript.Network")
strDomain = objWsNet.UserDomain
Set objWsNet = Nothing
Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")
For Each objItem In objGroup.Members
    Wscript.Echo objItem.Name
Next
Set objItem = Nothing
Set objGroup = Nothing

который выводит имя пользователя домена

Как сделать, чтобы выводило "Выводимое имя|Display name"
Пробовал и так
    Wscript.Echo objItem.cn
и так
    Wscript.Echo objItem.LastName
    Wscript.Echo objItem.DisplayName
выдает ошибку "Объект не поддерживает это свойство или метод",
на
    Wscript.Echo objItem.FullName
срабатывает нормально, но это немножко не то, что нужно.

Спасибо!

2

Re: VBS: Как получить "Выводимое имя|Display name" у пользователя домена?

Вам нужно с помощью объекта «NameTranslate» сконвертировать полученное NETBIOS-имя пользователя в форму LDAP, затем подключиться к AD при помощи этого имени и взять требуемое свойство из полученного объекта IADsUser. Поищите по форуму по ключевому слову «NameTranslate».

3

Re: VBS: Как получить "Выводимое имя|Display name" у пользователя домена?

Вытаскиваю DisplayName следующим способом:

Set objFSO = CreateObject("Scripting.FileSystemObject")
set WshShell = WScript.CreateObject("WScript.Shell")
Set objNetwork = CreateObject("Wscript.Network")

strName = objNetwork.UserName

'On Error Resume Next

Set objRootDSE = GetObject("LDAP://RootDSE")
If Err.Number <> 0 Then
    Wscript.Quit
End If

strDNSDomain = objRootDSE.Get("defaultNamingContext")

Const ADS_NAME_INITTYPE_DOMAIN = 1
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1179 = 1

Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_TYPE_NT4, strDNSDomain
objTrans.Set ADS_NAME_TYPE_1179, strDNSDomain
strNetBIOSDomain = objTrans.Get(ADS_NAME_TYPE_NT4)

strNetBIOSDomain = Left(strNetBIOSDomain, Len(strNetBIOSDomain) - 1)

objTrans.Init ADS_NAME_INITTYPE_DOMAIN, strNetBIOSDomain
objTrans.Set ADS_NAME_TYPE_NT4, strNetBIOSDomain & "\" & strName 
strUserDN = objTrans.Get(ADS_NAME_TYPE_1179)

Set objUser = GetObject("LDAP://" & strUserDN)

strUsername=objUser.Get("displayName")

WScript.Echo strUsername

Вдруг кому пригодится.