Блокировка пользователей Active Direcrty
Пользователь = "srvc_ao";
Пароль = ":D<v/QH___,BU8n*Q";
Домен = "Domain";
Попытка
СоединениеАДО = Новый COMОбъект("ADODB.Connection");
СоединениеАДО.Provider = "ADSDSOObject";
СоединениеАДО.Properties("User Id").Value = Пользователь;
СоединениеАДО.Properties("Password").Value = Пароль;
СоединениеАДО.Open("LDAPS://"+Домен);
//COMОбъект = ПолучитьCOMОбъект("LDAP:");
//Корень = COMОбъект.OpenDSObject("LDAP://RootDSE", Пользователь+"@"+Домен, Пароль, 1);
strCN = "Шанько Алексей Викторович";
newObject = СоединениеАДО.GetUser("User", "CN="+strCN);
newObject.SetInfo();
//ADS_UF_NORMAL_ACCOUNT = 512;
//newObject.Put("userAccountControl", ADS_UF_NORMAL_ACCOUNT);
//newObject.SetPassword("123456Zz");
newObject.AccountDisabled=0;
//newObject.pwdLastSet=0;
newObject.SetInfo();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Показатьвыходит в ошибку:
{ВнешняяОбработка.craft1c_ЗагрузкаПользователейИзAD.Форма.Форма.Форма(299)}: Ошибка при вызове метода контекста (GetUser): Произошла исключительная ситуация (ADODB.Connection): Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.
пробовал еще так:
Попытка
COMОбъект = ПолучитьCOMОбъект("LDAP:");
Корень = COMОбъект.OpenDSObject("LDAP://RootDSE", Пользователь+"@"+Домен, Пароль, 1);
strCN = "Шанько Алексей Викторович";
newObject = Корень.GetUser("User", "CN="+strCN);
newObject.SetInfo();
//ADS_UF_NORMAL_ACCOUNT = 512;
//newObject.Put("userAccountControl", ADS_UF_NORMAL_ACCOUNT);
//newObject.SetPassword("123456Zz");
newObject.AccountDisabled=0;
//newObject.pwdLastSet=0;
newObject.SetInfo();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Показатьошибка:
{ВнешняяОбработка.craft1c_ЗагрузкаПользователейИзAD.Форма.Форма.Форма(293)}: Метод объекта не обнаружен (GetUser)
Вопрос: как обратиться так, чтобы можно было заблокировать нужного пользователя?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
попрбовал еще так, но нет доступа
SID=S-1-5-21-1074616822-2874723946-3643489317-9509
Попытка
RootDSE = ПолучитьCOMОбъект("LDAP://RootDSE");
НашДомен = RootDSE.Get("defaultNamingContext");
Исключение
Сообщить("Не удалось подключиться к домену (IMG:style_emoticons/default/sad.gif) ");
КонецПопытки;
Если Не ЗначениеЗаполнено(НашДомен) Тогда
Возврат;
КонецЕсли;
//Основной алгоритм
КомандаАДО = Новый COMОбъект("ADODB.Command");
Пользователь = "srvc_ao";
Пароль = ":D<v/QH:$gh!)Z1ZQ,BU8n*Q";
Домен = "Domain";
СоединениеАДО = Новый COMОбъект("ADODB.Connection");
СоединениеАДО.Provider = "ADsDSOObject";
СоединениеАДО.Properties("User ID").value = Домен+"\"+Пользователь;
СоединениеАДО.Properties("Password").value = Пароль;
СоединениеАДО.Open("Active Directory Provider");
КомандаАДО.ActiveConnection = СоединениеАДО;
Попытка
Если НЕ ЗначениеЗаполнено(НашДомен) Тогда
RootDSE = ПолучитьCOMОбъект("LDAP://RootDSE");
НашДомен = RootDSE.Get("defaultNamingContext");
КонецЕсли;
База = "<LDAP://" + НашДомен + ">";
Исключение
Сообщить("Не удалось подключиться к домену (IMG:style_emoticons/default/sad.gif) ");
КонецПопытки;
ТекстЗапроса = "Sel ect ADsPath Fr om 'LDAP://" + НашДомен + "' Where objectClass='user' and objectCategory='person' and objectsid ='" + SID + "'";
КомандаАДО.CommandText = ТекстЗапроса;
КомандаАДО.Properties("Page Size").Value = 100;
КомандаАДО.Properties("Timeout").Value = 30;
КомандаАДО.Properties("Cache Results").Value = Ложь;
ВыборкаАДО = КомандаАДО.Execute();
Попытка
ВыборкаАДО.MoveFirst();
Исключение
Возврат;
КонецПопытки;
Пока НЕ ВыборкаАДО.EOF Цикл
objUser = ПолучитьCOMОбъект(ВыборкаАДО.Fields(0).Value);
ОбъектИзменен = Ложь;
objUser.mail = "mail@mail.ru";
Попытка
objUser.Setinfo();
Исключение
ТекстСообщения = "Не удалось записать сотрудника по причине: " + ОписаниеОшибки() + Символы.ПС;
Сообщить(ТекстСообщения);
КонецПопытки;
ВыборкаАДО.MoveNext();
КонецЦикла;
ПоказатьНе удалось записать сотрудника по причине: {ВнешняяОбработка.craft1c_ЗагрузкаПользователейИзAD.Форма.Форма.Форма(216)}: Ошибка при вызове метода контекста (Setinfo): Произошла исключительная ситуация (Active Directory): Отказано в доступе.
Подключение к "ADODB.Connection" из разных платформ разработки выполняется одинаково (через Provider).
Это драйвер работы с базами данных (для MS SQL sqloledb). Смотрите к какой базе выполняете подключение, и какой драйвер на ПК.
КоннекшнСтринг = "Provider=sqloledb;Server=" + ЖурналРегистрации_ПолучитьИмяСервера()
+ ";Database=" + ЖурналРегистрации_ПолучитьИмяБазы()
+ ";User ID=" + ЖурналРегистрации_ПолучитьПользователяБазы();
Коннекшн = Новый COMОбъект("ADODB.Connection");
БазаКоманда = Новый COMОбъект("ADODB.Command");
Коннекшн.ConnectionTimeout = 20;
Коннекшн.CursorLocation = 1;
Коннекшн.Mode = 1;
Коннекшн.Open(КоннекшнСтринг);
Это драйвер работы с базами данных (для MS SQL sqloledb). Смотрите к какой базе выполняете подключение, и какой драйвер на ПК.
КоннекшнСтринг = "Provider=sqloledb;Server=" + ЖурналРегистрации_ПолучитьИмяСервера()
+ ";Database=" + ЖурналРегистрации_ПолучитьИмяБазы()
+ ";User ID=" + ЖурналРегистрации_ПолучитьПользователяБазы();
Коннекшн = Новый COMОбъект("ADODB.Connection");
БазаКоманда = Новый COMОбъект("ADODB.Command");
Коннекшн.ConnectionTimeout = 20;
Коннекшн.CursorLocation = 1;
Коннекшн.Mode = 1;
Коннекшн.Open(КоннекшнСтринг);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот