Получить список пользователей ad в 1с
Для начала ответьте на вопрос: как Вы создаете пользователей в 1С?
1. Вводите их руками?
2. Вводит IT-отдел?
3. А может, с помощью механизма Microsoft Active Directory?
1. Что такое Microsoft Active Directory
В этой статье поговорим именно про механизм Microsoft Active Directory.
Начнем с теории. Microsoft Active Directory – это пакет средств, позволяющий проводить различные действия с пользователями в сети. То есть пользователь, под которым вы авторизуетесь входя в систему (включаем компьютер и вводим свой логин и пароль) – это и есть элемент Microsoft Active Directory. Обычно этим инструментом владеет системный администратор 1С в компании.
И тогда получается, что с приходом в компанию нового сотрудника, системный администратор 1С создает для него учетную запись в Microsoft Active Directory. После этого «новенький» сможет войти в систему на компьютере.
Этим мы можем воспользоваться просто создав загрузку пользователей в системной базе 1С из этого места.
2. Пример создания учетной записи в Microsoft Active Directory
Давайте рассмотрим для примера простой шаблон загрузки.
Для начала необходимо узнать у системного администратора 1С где находится данный механизм и ознакомиться с ним – просмотрев там все опции. Из всего этого нам будут интересны только доступные свойства у пользователей:
Редактор атрибутов в AD
· name – Имя пользователя: Иванов Иванов Иван;
· samaccountname – Имя авторизация в домене: IvanovIvan
· userAccountControl – свойство, отвечающие за активность аккаунта. В моем домене значения: «514» или «66050» говорят о том, что пользователь заблокирован.
Далее с помощью кода считываем эти данные из Active Directory. Прошу заметить, что отбираем записи только определенной категории («Person») и класса «user»:
Обращение к полям выборки необходимо так: ВыборкаАДО.Fields(«name»).Value:
Вот так с помощью данного инструмента мы без проблем сможем загружать/блокировать/обновлять любого пользователя системы в базе 1С.
Пример алгоритма загрузки пользователей, реализованный в прикрепленной обработке:
· Загружаем пользователей из Active Directory;
· Далее в «ПользователиИнформационнойБазы» делаем поиск существующего пользователя по доменному имени (если не нашел, то по имени):
Поля поиска в ПользователиИнформационнойБазы
Если пользователь найден, то можно выполнять с ним необходимые действия (обновить информацию, заблокировать).
Если пользователь не найден, то создаем его.
Обратите внимание! После того как вы создали нового пользователя ИБ, необходимо создать пользователя в справочнике «Пользователи». Для привязки этих элементов используйте реквизит справочника «ИдентификаторПользователяИБ»
Реквизит связка «ИдентификаторПользователяИБ»
Ну что, в этой статье я попытался дать основы работы с Active Directory и 1С.
Даже если Вы не сможете сделать это сами, то всегда можно попросить своих системных администраторов 1С или специалистов компании «Кодерлайн», оставив заявку на нашем сайте.
Специалист компании ООО «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Предлагаю вам рассмотреть возможность получения информации из Active Directory на стороне сервера.
Примеры запросов Active Directory
- Поиск административных учётных записей по атрибуту adminCount. Если пользователь является членом защищенной группы (например, Domain Admins, Enterprise Admins и т.п.), ему назначаются ACL, установленные в объекте AdminSDHolder в AD, а атрибуту adminCount пользователя присваивается значение 1.
При удалении пользователя из привилегированной группы процесс AdminSDHolder не возвращает атрибут adminCount к прежнему значению, т.е. в результаты запроса попадут и те учётные записи, которые, когда-либо входили в одну из защищённых групп.
Или более эффективный вариант:
PwdLastSet для определённой даты можно получить с помощью PowerShell:
Подробнее о атрибуте Pwd-Last-Set см. здесь.
objectCategory можно использовать любой, например group, computer, contact и др.
Servername — имя сервера печати, на котором установлен и опубликован в Active Directory принтер.
Пример получения E_MAIL на стороне Клиента.
В качестве входного параметра должна быть указана строка вида \\Домен\Пользователь_домена
Основные атрибуты Active Directory
Таблица основных пользовательских атрибутов Active Directory
Attribute \ Атрибут | Англоязычное название | Русскоязычное название | Value \ Значение |
OU (Organizational Unit) \ Подразделение | |||
distinguishedName | Distinguished Name | Отличительное (уникальное) имя | OU=Компания,DC=domain,DC=com |
name | Компания | ||
Group \ Группа | |||
distinguishedName | Distinguished Name | Отличительное (уникальное) имя | CN=Группа,OU=Компания,DC=domain,DC=com |
name | Группа | ||
member | Members | Члены группы (какие пользователи входят в данную группу) | CN=Сергей Петрович Иванов,OU=Компания,DC=domain,DC=com |
User \ Пользователь | |||
DN | Distinguished Name | Отличительное (уникальное) имя | CN=Сергей Петрович Иванов,OU=Компания,DC=domain,DC=com |
DC | Domain Component | Компонент(класс) доменного имени. | DC=domain,DC=com |
OU | Organizational Unit | Подразделение | Компания |
CN | Common Name | Общее имя | Сергей Петрович Иванов |
givenName | First name | Имя | Сергей Петрович |
name | Full name | Полное имя | Сергей Петрович Иванов |
sn (SurName) | Last name | Фамилия | Иванов |
displayName | Display Name | Выводимое имя | Сергей Петрович Иванов |
Электронная почта | mail@domain.com | ||
sAMAccountName | User logon name (pre-Windows 2000) | Имя входа пользователя (пред-Windows 2000) | IvanovSP |
userPrincipalName | User logon name | Имя входа пользователя | IvanovSP@domain.com |
memberOf | Member Of | Член групп (в какую группу входит данный пользователь) | CN=Группа,OU=Компания,DC=domain,DC=com |
Атрибут userAccountControl
Иногда надо понять включена или отключена учетная запись в AD. Или что еще с ней вообще происходит. За это отвечает атрибут userAccountControl, который является суммой нескольких свойств атрибутов. При этом, значение 512 является значением по умолчанию при всех снятых флагах на вкладке «Учетная запись» и каждый дополнительный параметр прибавляется к нему. Например, значения атрибута userAccountControl для наиболее распространенных случаев:
512 — Включена (Enabled)
514 (512+2) — Отключена (Disabled)
66048 (512+65536) — Включена, срок действия пароля не ограничен (Enabled, password never expires)
66050 (512+65536+2) — Отключена, срок действия пароля не ограничен (Disabled, password never expires)
Добрый день! Столкнулся с такой проблемой, нужно получить пользователей домена из 1С при помощи методов провайдера LDAP, нашел кусок кода переделал его под свои нужды и всё бы хорошо, но только он не работает, выдает такую ошибку:
: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Provider): Таблица не существует.
Думаю что запрос составлен не верно т. к. падает в момент выполнения Execut(), если кто в теме подскажите что не так. Текст функции:
Домен = "NameDomen";
СуперПользователь = "SuperUzverь";
КомандаАДО = Новый COMОбъект("ADODB.Command");
СоединениеАДО = Новый COMОбъект("ADODB.Connection");
СоединениеАДО.Provider = "ADsDSOObject;User \"+СуперПользователь+",ou=people,ou=domain,dc="+Домен+";Password=PasswordUser;";
СоединениеАДО.Open("Active Directory Provider");
КомандаАДО.ActiveConnection = СоединениеАДО;
КомандаАДО.CommandText = ТекстЗапроса;
КомандаАДО.Properties("Page Size").Value = 100;
КомандаАДО.Properties("Timeout").Value = 30;
КомандаАДО.Properties("Cache Results").Value = Ложь;
ВыборкаАДО = КомандаАДО.Execute();
Пока НЕ ВыборкаАДО.EOF Цикл
//Как-то просматриваем и обрабатываем содержимое атрибутов
//как это делается тоже пока не знаю
ПользователиОС (OSUsers)
Синтаксис:
ПользователиОС()
Возвращаемое значение:
Тип: ТаблицаЗначений; Массив.
Информация возвращается в виде таблицы значений, в колонках которой содержится следующая информация:
Локальный (Local) - признак того, что этому домену принадлежат локальные пользователи данного компьютера.
Описание:
Предоставляет доступ к информации о доменах и пользователях операционной системы.
Тонкий клиент, толстый клиент.
Примечание:
При использовании в тонком клиенте, информация возвращается в виде массива структур со свойствами (аналогичными колонкам возвращаемой таблицы значений).
Для начала ответьте на вопрос: как Вы создаете пользователей в 1С?
1. Вводите их руками?
2. Вводит IT-отдел?
3. А может, с помощью механизма Microsoft Active Directory?
1. Что такое Microsoft Active Directory
В этой статье поговорим именно про механизм Microsoft Active Directory.
Начнем с теории. Microsoft Active Directory – это пакет средств, позволяющий проводить различные действия с пользователями в сети. То есть пользователь, под которым вы авторизуетесь входя в систему (включаем компьютер и вводим свой логин и пароль) – это и есть элемент Microsoft Active Directory. Обычно этим инструментом владеет системный администратор 1С в компании.
И тогда получается, что с приходом в компанию нового сотрудника, системный администратор 1С создает для него учетную запись в Microsoft Active Directory. После этого «новенький» сможет войти в систему на компьютере.
Этим мы можем воспользоваться просто создав загрузку пользователей в системной базе 1С из этого места.
2. Пример создания учетной записи в Microsoft Active Directory
Давайте рассмотрим для примера простой шаблон загрузки.
Для начала необходимо узнать у системного администратора 1С где находится данный механизм и ознакомиться с ним – просмотрев там все опции. Из всего этого нам будут интересны только доступные свойства у пользователей:
Редактор атрибутов в AD
· name – Имя пользователя: Иванов Иванов Иван;
· samaccountname – Имя авторизация в домене: IvanovIvan
· userAccountControl – свойство, отвечающие за активность аккаунта. В моем домене значения: «514» или «66050» говорят о том, что пользователь заблокирован.
Далее с помощью кода считываем эти данные из Active Directory. Прошу заметить, что отбираем записи только определенной категории («Person») и класса «user»:
Обращение к полям выборки необходимо так: ВыборкаАДО.Fields(«name»).Value:
Вот так с помощью данного инструмента мы без проблем сможем загружать/блокировать/обновлять любого пользователя системы в базе 1С.
Пример алгоритма загрузки пользователей, реализованный в прикрепленной обработке:
· Загружаем пользователей из Active Directory;
· Далее в «ПользователиИнформационнойБазы» делаем поиск существующего пользователя по доменному имени (если не нашел, то по имени):
Поля поиска в ПользователиИнформационнойБазы
Если пользователь найден, то можно выполнять с ним необходимые действия (обновить информацию, заблокировать).
Если пользователь не найден, то создаем его.
Обратите внимание! После того как вы создали нового пользователя ИБ, необходимо создать пользователя в справочнике «Пользователи». Для привязки этих элементов используйте реквизит справочника «ИдентификаторПользователяИБ»
Реквизит связка «ИдентификаторПользователяИБ»
Ну что, в этой статье я попытался дать основы работы с Active Directory и 1С.
Даже если Вы не сможете сделать это сами, то всегда можно попросить своих системных администраторов 1С или специалистов компании «Кодерлайн», оставив заявку на нашем сайте.
Специалист компании ООО «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Порядок действий (описание команд) при создании учетной записи и внесение в OU и ГБ:
1. Установить компонент управления AD на сервер, с которого выполняются скрипты:
Install-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature
Выполняется однократно
2. Запросить список подразделений (в окне 1С выбрать одно значение из полученного перечня):
Get-ADOrganizationalUnit -Filter 'Name -like "*"' | Format-Table Name
Полученный список использовать в шаге №7
3. Запросить список групп безопасности(в окне 1С выбрать одно значение из полученного перечня):
Get-ADGroup -Filter 'Name -like "*"' | Format-Table Name
Полученный список использовать в шаге №8
4. Дать права на соединение без сертификата в PowerShell (PoSh):
Set-ExecutionPolicy RemoteSigned (запуск PoSh от администратора)
Требуется ввод пароля
ExchangeServer - DNS-имя вашего Exchange сервера
6. Импортировать командлеты exchange в локальную сессию PoSh:
Import-PSSession $Session –DisableNameChecking
7. Добавить аккаунт (AD и Почта):
New-Mailbox -Name "Иван Иваныч" -UserPrincipalName i.ivanych@ DOMAIN .ru -PrimarySmtpAddress "i.ivanych@ DOMAIN .ru" -OrganizationalUnit "OUName" -Password (ConvertTo-SecureString -String 'Aa313131' -AsPlainText -Force) -FirstName "Ivan" -LastName "Ivanych"
Где:
– Name это выводимое имя пользователя
- UserPrincipalName это «принципиальное» имя пользователя (его логин)
- OrganizationalUnit это подразделение организации
- Password это пароль
- FirstName это Имя пользователя
- LastName это Фамилия пользователя
- PrimarySmtpAddress это основной email пользователя
- OUName это наименование OU
8. Внести пользователя в группу безопасности AD:
Add-ADGroupMember -Identity "ИмяГруппыБезопасности" -Members "i.ivanych"
9. Удалить открытую сессию с Exchange:
Remove-PSSession $Session
Также в обработке можно посмотреть создание через COM пользователя ИБ, пользователя в справочнике "Пользователи", копирование настроек с уже существующего пользователя и отправку письма на почту нового сотрудника (с использованием конфигурации "Управление IT-отделом 8, редакция 3.1 (3.1.3.3) (softonit.ru)":
Обработка тестировалась (в текущий момент используется) на конфигурации "Управление IT-отделом 8, редакция 3.1 (3.1.3.3) (softonit.ru)"
Читайте также: