Один из способов - использовать интерфейс службы Active Directory (ADSI).
вы можете найти в другом сообщении SO (Can I match a user to a group accross different domains?) один из способов найти все группы, к которым принадлежит пользователь, используя ADSI, в сообщении это код C#, но его легко перевести.
Вот небольшой пример простого поиска для начала.
Clear-Host
$dn = New-Object System.DirectoryServices.DirectoryEntry ("LDAP://WM2008R2ENT:389/dc=dom,dc=fr","[email protected]","Pwd")
# Look for a user
$user2Find = "user1"
$Rech = new-object System.DirectoryServices.DirectorySearcher($dn)
$rc = $Rech.filter = "((sAMAccountName=$user2Find))"
$rc = $Rech.SearchScope = "subtree"
$rc = $Rech.PropertiesToLoad.Add("mail");
$theUser = $Rech.FindOne()
if ($theUser -ne $null)
{
Write-Host $theUser.Properties["mail"]
}
Другой способ заключается в использовании System.DirectoryServices.AccountManagement Namespace.
Этот способ также использует ADSI, но он инкапсулирован, и вам понадобится Framework .NET 3.5. Вы также найдете в same post, но в редакции (2011-10-18 13:25) часть, код C#, используя этот способ.
Вы можете также использовать WMI:
$user2Find = "user1"
$query = "SELECT * FROM ds_user where ds_sAMAccountName='$user2find'"
$user = Get-WmiObject -Query $query -Namespace "root\Directory\LDAP"
$user.DS_mail
Вы можете использовать это решение, локальный на сервере или с компьютера внутри домена, но это немного сложнее для проверки подлинности WMI из-за пределы домена ,
Почему бы не назвать их из DC или \\ домен \ Sysvol? –