Блокировка пользователей Active Direcrty

1. maksa2005 555 28.06.24 11:58 Сейчас в теме
Пользователь 		= "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)

Вопрос: как обратиться так, чтобы можно было заблокировать нужного пользователя?
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. -AI- 29.06.24 14:12 Сейчас в теме
(1)
Вопрос: как обратиться так, чтобы можно было заблокировать нужного пользователя?

не совсем то, но вдруг....

создать пользователя,
сделать у него автовход по идентификации ОС,
после входа сразу выкидывать.
6. maksa2005 555 01.07.24 10:44 Сейчас в теме
2. maksa2005 555 28.06.24 13:44 Сейчас в теме
попрбовал еще так, но нет доступа

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): Отказано в доступе.
3. MissionOnly 3 28.06.24 16:20 Сейчас в теме
Подключение к "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(КоннекшнСтринг);
4. MissionOnly 3 28.06.24 16:23 Сейчас в теме
Но к 1С базе лучше через "ADODB.Connection" не подключаться (если не хотите ее сломать).
7. maksa2005 555 01.07.24 12:27 Сейчас в теме +3 $m
8. user2088400 01.07.24 17:26 Сейчас в теме
Написать простейший скрипт на powershell и запускать его средствами 1С? По крайней мере это будет работать, если у пользователя под которым запущена 1С есть права на это.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот