Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] как узнать должность пользователя в AD (http://forum.oszone.net/showthread.php?t=138481)

pva 23-04-2009 13:56 1102033

как узнать должность пользователя в AD
 
Народ, подскажите, как называется аттрибут "должность" по английски в схеме AD?
~либо~ как перечислить все атрибуты объекта AD?

Delirium 24-04-2009 01:12 1102573

pva, а ты не смотрел программу WMI Code Creator ? В частности, через WMI классы (\root\CIMV2) и его методы Win32_UserAccount можно получить информацию. Программа создает код на VB script.

Admiral 25-04-2009 21:06 1104141

pva, если не ошибаюсь, атрибут называется Title

pva 27-04-2009 07:30 1105162

Заработало!!! :yahoo:

Delirium 27-04-2009 07:31 1105163

pva, приведи пример скрипта для истории :)

pva 27-04-2009 09:05 1105193

следующий код заполняет поле сообщения replyTo:
Код:

function mail_list(job_position)
{
    var connection = new ActiveXObject("AdoDb.Connection");
    var results = new ActiveXObject("AdoDb.Recordset");
    var result1 = "";

    connection.Open("Provider=ADsDSOObject");
    results.open("SELECT Name, Mail FROM 'LDAP://OU=IS,OU=SECTOR,DC=SECTOR,DC=RU' where Title='" + job_position + "'", connection);

    for(; !results.eof; results.MoveNext())
    {
        if (result1!="") result1 += ", ";
        result1 += "\"" + results(0).value + "\" <" + results(1).value + ">";
    }

    return result1;
}

WScript.Echo(mail_list("Начальник Охраны"));

Человека поменяли, адрес поменяли, а робот - работает!

Delirium 27-04-2009 09:10 1105196

pva, может стоит модернизировать скрипт, точнее его текст
Код:

where Title='" + job_position + "'"
Если в AD написать лишний пробел в начале или в конце должности, то скрипт не отработает. Может стоит сделать like ? и использовать * ?

pva 27-04-2009 10:08 1105219

вариант с WMI Code Creator:
Код:

function mail_list(job_position)
{
    var result1 = "";

    for(var results=new Enumerator(GetObject("winmgmts:\\\\.\\root\\directory\\LDAP").
            ExecQuery("SELECT * FROM ads_user where " + job_position,null,48));
            !results.atEnd(); results.moveNext())
    {
        if (result1!="") result1 += ", ";
        result1 += "\"" + results.item().ds_name + "\" <" + results.item().ds_mail + ">";
    }

    return result1;
}

У нас АД ведёт педантичный админ, он не ошибётся :) потом у нас с ним договорённость о названиях. А потом не хочется писать программу, проверяющуя все склонения и орфографические ошибки. Проще на пользователя ответственность повесить. Хотя, в крайнем случае можно завести справочник должностей, принудить пользоваться копипастингом при заполнении, и периодически автоматом проверять АД на соответствие справочнику


Время: 15:22.

Время: 15:22.
© OSzone.net 2001-