Как преобразовать GUID пользователя Active Directory в имя

GUID logo

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами научились запрещать обновления Windows навсегда или же на нужный нам период по ряду причин. Сегодня я хочу с вами поделить одной интересной практической задачей по AD. Я хочу вам показать, как вы можете зная GUID пользователя Active Directory получить его ФИО, email в  какой OU Он находится, покажу как все это можно автоматизировать с помощью PowerShell. Думаю будет интересно и полезно.

Что можно узнать по GUID пользователя Active Directory?

О том, что такое GUID я подробно вам рассказывал и много уже, где с ним встречались, только на разных сущностях. Напомню GUID (глобальный уникальный идентификатор) - это термин, используемый Microsoft для числа, которое ее программа генерирует, чтобы создать уникальную идентичность для объекта.

Какая перед до мной встала задача. Коллеги из другого отдела произвели выгрузку из Microsoft CRM, получив SystemUserId и ActiveDirectoryGuid. Они хотят понять, что это за сотрудник, активна ли его учетная запись и так далее. Все делается для аудита и очистки лишних учетных записей из БД CRM, благое дело. Информацию предоставили в виде Google таблицы из двух столбцов.

SystemUserId

Попросили для каждой записи найти соответствующие поля:

  • DistinguishedName
  • Name
  • mail
  • Department
  • Title
  • Enabled

Читайте также - Переменные среды Windows

Как преобразовывать ObjectGUID в Active Directory

Для начала я покажу вам, где искать GUID пользователя. Для этой задачи у меня есть тестовый пользователь Барбоскин Геннадий. Вас нужно запросить у Active Directory его свойства, для этого откройте оболочку PowerShell ISE и введите:

Get-ADUser barboskin.g -Properties ObjectGUID

В результате вы получите длинный код ObjectGUID, это по сути и есть GUID пользователя, так же тут и SID увидите.

Получение ObjectGUID у пользователя Active Directory

Простой пример преобразования GUID

$guid = "d6d869d3-f5c6-4c5e-ad6a-28e8ceba2c27"

foreach ($dom in (Get-adforest).Domains) { Get-ADObject -filter {ObjectGUID -eq $guid } -Properties DistinguishedName -Server $dom | fl }

В результате вы получили информацию, о DistinguishedName, удобно. Так вы можете подставлять любое из свойств или не одно.

Преобразование ObjectGUID в DistinguishedName

Усложним немного конструкцию и произведем чтение из файла со списком GUID.

foreach ($guid in (Get-Content "C:\Temp\guid.txt"))

{

$guid

$dn = $null

$dn = (Get-ADObject -Identity $guid -Server "dc01.root.pyatilistnik.org:3268" -Properties DistinguishedName).DistinguishedName

$dn | Out-File "C:\Temp\guid-ext.txt" -Append

}

Обратите внимание, что вы сразу получите список прочитанных из файла GUID пользователя.

Скрипт считывания GUID из файла и вывод DN в файл

В результате у вас будет экспортирован текстовый файл со списком DistinguishedName.

Текстовый файл со списком DistinguishedName

А теперь давайте еще получим дополнительные данные:

  • DistinguishedName
  • ФИО
  • Email
  • Отдел
  • Статус учетной записи Активна/Выключена

$out_file = "C:\Temp\users.csv"

$users = @()

foreach ($guid in (Get-Content "C:\Temp\guid.txt"))

{
$ADObject = $null

$ADObject = Get-ADObject -Identity $guid -Server "dc01.root.pyatilistnik.org:3268"
$users += Get-ADUser $ADObject -Properties mail, Department, Title | select DistinguishedName, Name, mail, Department, Title, Enabled}

$users | Export-Csv -Path $out_file -Force -Encoding Unicode -NoTypeInformation -Delimiter ";"

В результате у вас быть экспортирован CSV файл.

CSV файл

Теперь вам остается разделить CSV файл на столбцы, чтобы привести данные в удобную таблицу.

Сводная таблица с данными полученными из GUID

На этом у меня все. Если у вас еще остались вопросы, как можно из GUID пользователя получать разную информацию, то пишите в комментариях. С вами был Иван Сёмин, автор и создатель IT блога Pyatilistnik.org.

Оцените статью
Настройка серверов windows и linux
Добавить комментарий