Jednym ze sposobów jest używanie interfejsu ADSI (Active-Directory Service Interface).
można znaleźć w innym poście SO (Can I match a user to a group accross different domains?) w jeden sposób, aby znaleźć wszystkie grupy, do których należy użytkownik, używając ADSI, w poście jest to kod C#, ale jest łatwy do przetłumaczenia.
Oto mały przykład rozpoczęcia prostego wyszukiwania.
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"]
}
Innym sposobem jest użycie System.DirectoryServices.AccountManagement Namespace.
W ten sposób jest również używany interfejs ADSI, ale jest on hermetyzowany i potrzebny jest program Framework .NET 3.5. Znajdziesz go także w same post, ale w edytowanej części(2011-10-18 13:25), kod C# używa się w ten sposób.
Można również użyć WMI:
$user2Find = "user1"
$query = "SELECT * FROM ds_user where ds_sAMAccountName='$user2find'"
$user = Get-WmiObject -Query $query -Namespace "root\Directory\LDAP"
$user.DS_mail
Można użyć tego rozwiązania lokalnie na serwerze lub z komputera wewnątrz domeny, ale jest to trochę bardziej skomplikowane, aby uwierzytelnić WMI spoza domeny .
Dlaczego nie nazwać ich z DC lub \\ domena \ Sysvol? –