Войти

Показать полную графическую версию : [решено] как узнать должность пользователя в AD


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

Delirium
24-04-2009, 01:12
pva, а ты не смотрел программу WMI Code Creator (http://www.microsoft.com/downloads/details.aspx?familyid=2cc30a64-ea15-4661-8da4-55bbc145c30e&displaylang=en) ? В частности, через WMI классы (\root\CIMV2) и его методы Win32_UserAccount можно получить информацию. Программа создает код на VB script.

Admiral
25-04-2009, 21:06
pva, если не ошибаюсь, атрибут называется Title

pva
27-04-2009, 07:30
Заработало!!! :yahoo:

Delirium
27-04-2009, 07:31
pva, приведи пример скрипта для истории :)

pva
27-04-2009, 09:05
следующий код заполняет поле сообщения 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
pva, может стоит модернизировать скрипт, точнее его текст
where Title='" + job_position + "'"
Если в AD написать лишний пробел в начале или в конце должности, то скрипт не отработает. Может стоит сделать like ? и использовать * ?

pva
27-04-2009, 10:08
вариант с 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;
}

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




© OSzone.net 2001-2012