![]() |
#6 |
Участник
|
Можно воспользоваться ADO
X++: static void GetUserList(Args _args) { Com oConnect = new Com("ADODB.Connection"); Com property; Com Properties; Com rs; Com Fields; Com Field; ComVariant var; Array array; str s; int i; boolean f; str address; #define.UF_ACCOUNTDISABLE(0x02) ; oConnect.Provider("ADsDSOObject"); Properties = oConnect.Properties(); /* property = Properties.Item("User ID"); property.Value("пользователь"); property = Properties.Item("Password"); property.Value("пароль");*/ // Если для доступа надо подключаться под другим пользователем, то раскомментировать и указать правильный аккаунт property = Properties.Item("Encrypt Password"); property.Value(True); oConnect.Open("DS Query"); // OU добавляются вначале запроса LDAP <LDAP://OU=Организация,DC=Axapta,DC=ru> rs = oConnect.Execute(ComVariant::createFromStr( "<LDAP://DC=Axapta,DC=ru>;(&((objectClass=user)(objectCategory=person)));" + "userAccountControl,userPrincipalName,Name,proxyAddresses,sAMAccountName,Mail;subTree")); //;onelevel SetPrefix("Пользователи домена"); While (!rs.EOF()) { Fields = rs.Fields(); Field = Fields.Item("userAccountControl"); var = Field.Value(); if ((var.int() & #UF_ACCOUNTDISABLE) == 0) // Только активные пользователи { Field = Fields.Item("sAMAccountName"); // имя аккаунта var = Field.Value(); s = var.bStr(); Field = Fields.Item("userPrincipalName"); // имя в формате имя@домен var = Field.Value(); s += ";" + var.bStr(); Field = Fields.Item("Name"); // полное имя var = Field.Value(); s += ";" + var.bStr(); Field = Fields.Item("proxyAddresses"); // почтовый адрес на сервере Exchange var = Field.Value(); address = ""; if (var.variantType() != ComVariantType::VT_NULL) { array = var.safeArray(); for (i=1;i<=array.lastIndex();i++) { var = array.value(i); if (var.variantType() == ComVariantType::VT_BSTR) { if (match("<SMTP", var.bStr())) address += (address ? "," : "") + substr(var.bStr(), strLen("SMTP:")+1, strLen(var.bStr())); } } if (address) s += ";" + address; else { Field = Fields.Item("Mail"); // поле адреса в данных пользователя var = Field.Value(); s += ";" + var.bStr(); } } info(s); } rs.MoveNext(); } }
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 01.07.2009 в 18:57. |
|
|
За это сообщение автора поблагодарили: sukhanchik (3), Poleax (1), Fizik (1), oip (5). |
Теги |
active directory, ado, ax3.0, sql, доменный пользователь, хранимые процедуры |
|
|