Как мне запросить информацию о текущем пользователе из Active Directory?
Я знаю, что могу получить доступ к большому количеству информации о текущем пользователе из Windows, например, к переменным среды и т.п. Я могу получить имя пользователя и домен текущего пользователя, но что мне нужно для поиска соответствующей записи в AD?
Я особенно хочу быть уверенным, что могу однозначно идентифицировать текущий пользователь в AD, так как этот сценарий имеет дело с большим количеством пользователей, и любую потенциальную двусмысленность может быть трудно разрешить программно. Как лучше всего это сделать?
Если вы хотите сделать это в PowerShell, при условии, что у вас загружен модуль ActiveDirectory ( ipmo ActiveDirectory
), вы можете сделать
Get-ADUser ($env:UserName)
Имя пользователя для входа в систему должно быть уникальным в домене и Get-ADUser
будет использовать текущий домен по умолчанию
Поковырявшись некоторое время, я наткнулся на эту маленькую красоту из .NET API:
public static UserPrincipal Current { get; }
Это поддерживается с .NET 3.5
, поэтому он идеально подходит и для старых ОС Windows. В PowerShell это можно использовать так:
# Load in the Assembly for this stuff
[System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices.AccountManagement") | Out-Null
Function Get-CurrentUser {
[System.DirectoryServices.AccountManagement.UserPrincipal]::Current
}