Подробный гайд: Где искать атрибут employeeID в Active Directory?
1. Что такое employeeID?
employeeID — это стандартный атрибут в схеме Active Directory, предназначенный для хранения уникального идентификатора сотрудника (например, табельного номера, кадрового номера или кода из HR-системы). Он определён для классов объектов user, contact и inetOrgPerson. Атрибут часто используется при синхронизации с системами управления персоналом (HR), в скриптах автоматизации и для интеграции с другими приложениями.
2. Характеристики атрибута
| Параметр | Значение |
|---|---|
| LDAP-имя | employeeID |
| Отображаемое имя | Employee-ID (в русской локали — «Код сотрудника») |
| OID | 1.2.840.113556.1.4.35 |
| Синтаксис | Directory String (Unicode String) |
| Количество значений | Однозначный (single-valued) |
| Максимальная длина | 16 символов (rangeUpper = 16) |
| Индексация по умолчанию | Не индексирован (searchFlags = 0) |
| Доступность | Windows 2000 Server и выше |
Важно:
Из-за ограничения длины в 16 символов атрибут подходит не для всех идентификаторов. Если требуется хранить более длинные значения, используют расширение схемы (custom attributes) или атрибут extensionAttribute1-15.
3. Где искать employeeID в графическом интерфейсе
3.1. Active Directory Users and Computers (ADUC)
- Откройте оснастку Active Directory Users and Computers (
dsa.msc). - В меню выберите View → Advanced Features (Вид → Дополнительные компоненты). Без этого шага вкладка редактора атрибутов будет недоступна.
- Найдите нужного пользователя (или контакт), откройте его свойства двойным щелчком.
- Перейдите на вкладку Attribute Editor (Редактор атрибутов). В русской версии может называться «Редактор атрибутов».
- В списке атрибутов найдите employeeID. Значение отображается в столбце «Value».
- Чтобы изменить значение, выберите строку и нажмите Edit (Изменить), введите новый идентификатор и подтвердите.
Если вкладки Attribute Editor нет, убедитесь, что включены Advanced Features, и что вы смотрите свойства именно пользователя (не группы или компьютера).
3.2. ADSI Edit (adsiedit.msc)
Для низкоуровневого доступа к объектам каталога:
- Запустите ADSI Edit (
adsiedit.msc). - Подключитесь к нужному разделу (например, Default naming context).
- Найдите объект пользователя в дереве.
- Щёлкните правой кнопкой мыши → Properties.
- В списке атрибутов найдите employeeID (обязательно отметьте «Show only attributes that have values» или прокрутите список).
- Для редактирования выберите атрибут и нажмите Edit.
4. Поиск и просмотр через PowerShell
Модуль Active Directory для PowerShell — наиболее удобный способ массового просмотра и изменения.
4.1. Получение значения для одного пользователя
Get-ADUser -Identity "ivanov" -Properties employeeID | Select-Object Name, SamAccountName, employeeID
4.2. Получение списка всех пользователей с заполненным employeeID
Get-ADUser -Filter * -Properties employeeID | Where-Object { $_.employeeID -ne $null } | Select-Object Name, SamAccountName, employeeID
4.3. Поиск пользователя по конкретному employeeID
Если атрибут не индексирован, поиск выполняется полным перебором, что может быть медленно в больших доменах. Рекомендуется добавить индекс (см. раздел 7).
Get-ADUser -Filter "employeeID -eq '12345'" -Properties employeeID
4.4. Изменение значения
Set-ADUser -Identity "ivanov" -Replace @{employeeID="12345"}
или
Set-ADUser -Identity "ivanov" -EmployeeID "12345" # параметр доступен в некоторых версиях модуля
5. Другие инструменты командной строки
5.1. DSQuery / DSGet (устаревшие, но работают)
Поиск пользователя по employeeID напрямую не поддерживается, но можно получить значение для конкретного пользователя:
dsquery user -name "Ivanov Ivan" | dsget user -samid -employeeid
5.2. Ldifde / Csvde для экспорта
Экспорт всех пользователей с атрибутом employeeID в файл:
csvde -f employees.csv -r "(&(objectClass=user)(employeeID=*))" -l "DN,employeeID,sAMAccountName"
5.3. LDP.exe
- Подключитесь к серверу и контексту именования.
- Выполните поиск с фильтром
(employeeID=*), запросив атрибутemployeeID.
6. Где хранится значение физически?
Атрибут хранится в базе данных Active Directory (NTDS.DIT) как часть объекта пользователя. Он реплицируется между контроллерами домена в соответствии с обычной топологией репликации (в пределах домена — на все DC, в глобальном каталоге — если атрибут включён в Partial Attribute Set; по умолчанию employeeID не входит в глобальный каталог, поэтому поиск в GC по этому атрибуту невозможен без изменения схемы).
7. Практические рекомендации
7.1. Уникальность
Active Directory не проверяет уникальность employeeID автоматически. Если требуется уникальность, необходимо реализовать проверку в скриптах или процессах.
7.2. Индексация
Если планируется часто искать пользователей по employeeID в больших доменах, рекомендуется добавить индекс на этот атрибут. Это ускорит поиск.
Добавление индекса через PowerShell:
$schemaPath = (Get-ADRootDSE).schemaNamingContext
$attr = Get-ADObject -Identity "CN=Employee-ID,CN=Schema,CN=Configuration,$schemaPath" -Properties searchFlags
$newFlags = $attr.searchFlags -bor 1 # 1 = INDEX
Set-ADObject -Identity $attr.DistinguishedName -Replace @{searchFlags=$newFlags}
После этого индекс будет построен автоматически.
7.3. Использование в синхронизации
Атрибут employeeID часто используется как сопоставляемый идентификатор при синхронизации между AD и HR-системами (например, Microsoft Identity Manager, Azure AD Connect). Убедитесь, что формат идентификатора соответствует ограничению в 16 символов.
7.4. Отображение в других оснастках
В обычной вкладке «General» свойств пользователя employeeID не отображается. Для отображения в пользовательских формах можно использовать расширения ADUC или сторонние инструменты.
8. Важно
Атрибут employeeID — простой и удобный способ хранения табельного номера сотрудника в Active Directory. Он доступен для чтения и записи стандартными средствами AD, но требует включения Advanced Features в графической оснастке или использования PowerShell/ADSI для полноценной работы. При проектировании решений учитывайте ограничение длины (16 символов) и отсутствие индекса по умолчанию.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.