Получение полного идентификатора пользователя Azure AD для локального пользователя
Я пытаюсь ответить на простой вопрос. У меня есть устройство, зарегистрированное в AzureAD и автопилотированное. Используя IntuneManagementExtenstion, я хотел бы получить полное имя пользователя, вошедшего в систему, чтобы использовать его в других местах в сценариях. Я не вижу способа сделать это.
Все примеры, которые я могу найти, возвращают либо короткое имя, либо домен AzureAD и имя пользователя, например:
Арендатор - mytestdomain.onmicrosoft.com. Пользователь - mytestuser@mytestdomain.com.
большинство методов, если вы просто гуглите или выполняете поиск в стеке, возвращают либо
AzureAD\mytestuser или mytestuser
Мне нужен тот, который возвращает полный mytestuser@mytestdomain.com. Это связано с тем, что у арендатора есть несколько имен тщеславия, поэтому мне нужно определить, какое из них вошло в систему (например, mytestuser@mytestdomain.com - это учетная запись пользователя, отличная от mytestuser@mytestdomain2.com или mytestuser@mytestdomain3.com). Поэтому я не могу просто добавить свое имя арендатора в конце вывода другими методами.
Любые мысли приветствуются. Методы, которые требуют установки модулей msol / azuread, похоже, не работают, так как они требуют входа пользователя в систему, что нарушает точку, и, поскольку он запускается расширением управления Intune, пользователь не может взаимодействовать в любом случае.
Спасибо
1 ответ
Я немного занят, чтобы проверить это прямо сейчас, но это должно сработать.
Intune может запустить скрипт Powershell. Эта команда вернет полное имя учетной записи пользователя в формате, который вы описали.
whoami.exe /UPN
Поскольку вы заявили, что вы хотите, чтобы пользователь уже вошел в систему. При настройке параметров в Intune обязательно выберите параметр "Запускать этот сценарий с использованием учетных данных для входа в систему".
Эта строка возвращает UPN из информации о присоединении к домену в реестре. Должен быть запущен с правами администратора
[string]$($1='Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CloudDomainJoin\JoinInfo\';if(Test-Path -Path $1){(Get-ItemProperty -Path ('{0}\{1}' -f ($1,(Get-ChildItem -Path $1).Name.Split('\')[-1])) -Name 'UserEmail' | Select-Object -ExpandProperty 'UserEmail')}else{''})