Как выгрузить журнал регистрации в XML-формате? Код 1C v 8.х ВыгрузитьЖурналРегистрации( "C:\log.xml" ) ;
Пользователи = ПользователиИнформационнойБазы. ПолучитьПользователей( ) ;
Для Каждого Пользователь из Пользователи Цикл
НовыйЭлемент = СписокПользователей. Добавить( ) ;
НовыйЭлемент. Пометка = Истина ;
НовыйЭлемент. Значение = Пользователь;
НовыйЭлемент. Представление = Пользователь. Имя;
КонецЦикла ;
Массив = Новый Массив;
Для Каждого Пользователь Из СписокПользователей Цикл
Если Пользователь. Пометка Тогда
Массив. Добавить( Пользователь) ;
КонецЕсли ;
КонецЦикла ;
СтруктураФильтра = Новый Структура;
СтруктураФильтра. Вставить( "Пользователь" , Массив) ;
ВыгрузитьЖурналРегистрации( "C:\log.xml" , СтруктураФильтра, "Дата, Пользователь, ПредставлениеСобытия" ) ;
Категория:
Встроенные Функции Полезные процедуры работы с Active Directory (AD) Надоели просить меня запостить рабочие модули работы с AD, вот запостил, в качестве бонуса убийца любого процесса в памяти любого компа.
p.s. для работы нужны определенные права.
Автор:
vde69
Код 1C v 8.х Функция ПолучитьСписокДоменов () Экспорт
Результат = Новый Массив( ) ;
objNameSpace = "" ;
Попытка objNameSpace = ПолучитьCOMОбъект( "WinNT:" ) ;
м = Новый Массив( ) ; м. Добавить( "domain" ) ;
м2 = Новый COMSafeArray( м, "VT_VARIANT" ) ;
objNameSpace. Filter = м2 ;
Для каждого item Из objNameSpace Цикл
Результат. Добавить( item. Name) ;
КонецЦикла ;
Исключение
Результат. Очистить( ) ;
КонецПопытки ;
Возврат Результат;
КонецФункции
Функция ПолучитьСписокГруппВДомене (ИмяДомена, ТипГрупп = "GlobalGroup" ) Экспорт
Результат = Новый Массив( ) ;
objNameSpace = "" ;
Попытка objNameSpace = ПолучитьCOMОбъект( "WinNT://" + СокрЛП( ИмяДомена) ) ;
м = Новый Массив( ) ;
м. Добавить( ТипГрупп) ;
м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( ) ;
КонецЦикла ;
Исключение
Возврат Ложь ;
КонецПопытки ;
Возврат Истина ;
КонецФункции
Код 1C v 8.х
Функция ПолучитьMailПоПользователю(СсылкаПользователь)
Адрес= "" ;
ПользовательИБ= ПользователиИнформационнойБазы. НайтиПоИмени( СокрЛП( СсылкаПользователь. Код) ) ;
Если ПользовательИБ< > Неопределено Тогда
Если ПользовательИБ. АутентификацияОС Тогда
ПользовательОС= СтрЗаменить( ПользовательИБ. ПользовательОС, "\" , "/" ) ;
Попытка
ЮзерАД= ПолучитьCOMОбъект( "WinNT:" + ПользовательОС+ ",user" ) ;
LDAP= ПолучитьCOMОбъект( "LDAP://CN=" + ЮзерАД. FullName+ ",OU=Common Users,OU=Regular Users,DC=" + Домен+ ",DC=local" ) ;
Адрес= LDAP. Mail;
Исключение
КонецПопытки ;
КонецЕсли ;
КонецЕсли ;
Возврат Адрес;
КонецФункции
Категория:
COM-объекты, WMI, WSH