Каталог решений - Полезные процедуры работы с AD

Полезные процедуры работы с AD

Полезные процедуры работы с AD

В наличии

Надоели просить меня запостить рабочие модули работы с AD, вот запостил, в качестве бонуса убийца любого процесса в памяти любого компа.

ps
для работы нужны определенные права.

Категория:

Описание

Функция ПолучитьСписокДоменов () Экспорт  
	Результат = Новый Массив(); 
	objNameSpace = "";                   
	Попытка  objNameSpace = ПолучитьCOMОбъект("WinNT:");   
		м = Новый Массив();  м.Добавить("domain"); // Computer User Group GlobalGroup domain  
		м2 = Новый COMSafeArray(м, "VT_VARIANT");  
		objNameSpace.Filter = м2;  
		Для каждого item Из objNameSpace Цикл   
			Результат.Добавить(item.Name);  
		КонецЦикла; 
	Исключение  
		Результат.Очистить(); 
	КонецПопытки;  
	Возврат Результат;
КонецФункции


Функция ПолучитьСписокГруппВДомене (ИмяДомена, ТипГрупп = "GlobalGroup") Экспорт  
	Результат = Новый Массив(); 
	objNameSpace = "";  
	Попытка  objNameSpace = ПолучитьCOMОбъект("WinNT://"+СокрЛП(ИмяДомена));   
		м = Новый Массив();  
		м.Добавить(ТипГрупп); // Computer User Group GlobalGroup domain  
		м2 = Новый COMSafeArray(м, "VT_VARIANT");  
		objNameSpace.Filter = м2;  
		Для каждого item Из objNameSpace Цикл   
			Результат.Добавить(item.Name);  
		КонецЦикла; 
	Исключение  
		Результат.Очистить(); 
	КонецПопытки;  
	
	Возврат Результат;
КонецФункции
	
Функция ПолучитьСписокПользователейВГруппеДомена (ИмяДомена, ИмяГруппы) Экспорт  
	Результат = Новый Массив(); 
	objNameSpace = "";  
	Попытка  
		objNameSpace = ПолучитьCOMОбъект("WinNT://" + СокрЛП(ИмяДомена) + "/" + СокрЛП(ИмяГруппы) + ", Group");   
		Для каждого item Из objNameSpace.Members() Цикл   
			Результат.Добавить(item.Name);  
		КонецЦикла; 
	Исключение  
		Результат.Очистить(); 
	КонецПопытки;  
	
	Возврат Результат;	
КонецФункции

Функция ПользовательВГруппеДомена (ИмяДомена, ИмяГруппы, ИмяПользователя) Экспорт  
	Результат = Ложь;  
	Массив = ПолучитьСписокПользователейВГруппеДомена (СокрЛП(ИмяДомена), ИмяГруппы);
	Для каждого элМассив из Массив Цикл  
		Если ВРег(элМассив) = ВРег(СокрЛП(ИмяПользователя)) Тогда   // пользователь уже в группе   
			Результат = Истина;    
			Прервать;  
		КонецЕсли; 
	КонецЦикла;  
	
	Возврат Результат;
КонецФункции

Функция ДобавитьПользователяВГруппуДомена (ИмяДомена, ИмяГруппы, ИмяПользователя) Экспорт  
	Результат = Ложь; 
	element_user = ""; 
	element_group = "";  
	Попытка  
		element_user = ПолучитьCOMОбъект("WinNT://" + ИмяДомена + "/" + ИмяПользователя + ", user");  
		element_group = ПолучитьCOMОбъект("WinNT://" + ИмяДомена + "/" + ИмяГруппы + ", group");  
		element_group.Add(element_user.ADsPath);  element_group.SetInfo();  
		Результат = Истина; 
	Исключение  
		Результат = Ложь; 
	КонецПопытки;  
	
	Возврат Результат;
КонецФункции

Функция УдалитьПользователяИзГруппыДомена (ИмяДомена, ИмяГруппы, ИмяПользователя) Экспорт  
	Результат = Ложь; 
	element_user = ""; 
	element_group = "";  
	Попытка  element_user = ПолучитьCOMОбъект("WinNT://" + ИмяДомена + "/" + ИмяПользователя + ", user");  
		element_group = ПолучитьCOMОбъект("WinNT://" + ИмяДомена + "/" + ИмяГруппы + ", group");  
		element_group.Remove(element_user.ADsPath);  
		element_group.SetInfo();  
		Результат = Истина; 
	Исключение  
		Результат = Ложь; 
	КонецПопытки;  
	
	Возврат Результат;	
КонецФункции

Процедура ЗаполнитьПочтовыеАдресаИзAD() 
	Попытка      
		conn = ПолучитьCOMОбъект("","ADODB.Connection");  
		conn.Provider = "ADSDSOObject";  
		conn.Open("Active Directory Provider"); 
	Исключение  Предупреждение("Ошибка подключения к Active Directory!");  
		Возврат; 
	КонецПопытки;   
	
	Для Каждого Стр из Таблица Цикл  
		Если НЕ ПустаяСтрока(Стр.Логин) Тогда   
			Попытка        
				query = "SEL ECT ADsPath FR OM 'LDAP://DC="+СокрЛП(Домен.Код)+"' WHERE SAMAccountName='"+Стр.Логин+"'";    
				rs = conn.Execute(query);    
				Пока НЕ rs.EOF() Цикл     
					obj = ПолучитьCOMОбъект(rs.Fields(0).Value);     
					Если obj.Class="user" Тогда      
						Стр.НоваяПочта=СокрЛП(obj.EmailAddress);      
						Если Стр.НоваяПочта<>Стр.СтараяПочта Тогда       
							Стр.Установить=Истина;      
						КонецЕсли;     
					КонецЕсли;     
					rs.MoveNext();    
				КонецЦикла;   
			Исключение
				Сообщить("Ошибка получения почты для логина :"+Стр.Логин);				                                                      
			КонецПопытки;
		КонецЕсли;
	КонецЦикла;
	conn.Close();	
КонецПроцедуры

Функция УдалитьПроцесс (ИмяКомпьютера, НазваниеПроцесса, Логин, Пароль) Экспорт  
	Попытка  COM = Новый COMОбъект ("WbemScripting.SWbemLocator");  
		Серв = COM.ConnectServer(СокрЛп(ИмяКомпьютера), "\root\cimv2", СокрЛП(Логин), СокрЛП(Пароль));  
		СписокПроцессов = Серв.execQuery("Sel ect * fr om Win32_Process Where Name = '"+СокрЛП(НазваниеПроцесса)+"'");  
		Для каждого item Из СписокПроцессов Цикл   
			item.Terminate();  
		КонецЦикла; 
	Исключение  
		Возврат Ложь; 
	КонецПопытки;  
	
	Возврат Истина;
КонецФункции
		

has been added to your cart:
Оформление заказа