none
Как при помощи vbs скрипта можно вытянуть данные по пользователю из AD RRS feed

  • Вопрос

  • Как при помощи vbs скрипта можно вытянуть данные по пользователю из АД?

    Узнать доменное имя пользователя можно так:

     

     Dim WshNetwork

    Set WshNetwork = WScript.CreateObject("WScript.Network")

    msgbox WshNetwork.username

    А как вытянуть остальные сведения? В частности интересует e-mail адрес пользователя.

    На форуме по программированию я ответа не получил...

    16 августа 2011 г. 7:34

Ответы

Все ответы

  • http://social.technet.microsoft.com/Forums/ru/scrlangru/thread/24131ddc-3638-4e0e-b513-220899003409

    Вероятно это поможет.


    In pivo veritas... t.G. - испокон и вовеки. Want to believe... It's a magic...
    • Предложено в качестве ответа Vinokurov Yuriy 19 августа 2011 г. 12:15
    • Помечено в качестве ответа Vinokurov Yuriy 22 августа 2011 г. 7:48
    16 августа 2011 г. 7:42
  • а велосипед изобретать зачем? не вариант ли dsquery user -samid <login> | dsget user -email
    • Предложено в качестве ответа Vinokurov Yuriy 19 августа 2011 г. 12:15
    • Помечено в качестве ответа Vinokurov Yuriy 22 августа 2011 г. 7:48
    16 августа 2011 г. 9:59
    Отвечающий
  • Ув. Andrico, возможно я не совсем корректно задал вопрос...

    Предложенный Вами способ подходит только для серверов. Мне же необходимо считать данные из АД с пользовательской машины. Учетные данные админа при этом совсем не обязательны, ведь можно получить эти сведения стандартными средствами Explorer`а (Сеть -> Поиск в Active Directory).

    6 сентября 2011 г. 13:01
  • Предложенный Вами способ подходит только для серверов. Мне же необходимо считать данные из АД с пользовательской машины.
    Почему же? вы про то, что по-умолчанию на пользовательских машинах нет утилит? да, если память не изменяет - идут с админпаком
    7 сентября 2011 г. 6:09
    Отвечающий
  • Хотелось бы обойтись без установки доп. утилит.

    Я, кстати, нашел как вытянуть сведения из АД, только на net:

     

    using System.DirectoryServices;

    using System.DirectoryServices.AccountManagement;

    using System.Security.Principal;

     

    public List<string> GetGroups(string curr_name)

        {

            List<string> result = new List<string>();

            PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain);

            PrincipalSearchResult<Principal> groups;

            UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, curr_name);

            if (user != null)

            {

                groups = user.GetGroups();

                foreach (Principal p in groups)

                {

                    if (p is GroupPrincipal)

                        result.Add(((GroupPrincipal)p).Name);

                }

            }

            return result;

        }

     

    VBA пока не поддается... но, я не собираюсь сдаваться! :)

    12 сентября 2011 г. 5:03
  • Решение:

     

     

    Option Explicit

     

    Dim objSysInfo, strUserDN, objUser, strEmail

     

    Set objSysInfo = CreateObject("ADSystemInfo")

    strUserDN = objSysInfo.UserName

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

    strEmail = objUser.mail

     

    Call MsgBox("User email address: " & strEmail)

     

    22 сентября 2011 г. 6:47