Un modo è l'utilizzo di Active Directory Service Interface (ADSI).
è possibile trovare in un altro post SO (Can I match a user to a group accross different domains?) un modo per trovare tutti i gruppi a cui appartiene un utente, utilizzando ADSI, nel post è un codice C#, ma è facile da tradurre.
Ecco un piccolo esempio di una semplice ricerca per iniziare.
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"]
}
Un altro modo è quello di utilizzare System.DirectoryServices.AccountManagement Namespace.
In questo modo si utilizza anche ADSI, ma è incapsulato e si necessita di Framework .NET 3.5. Troverete anche nel same post ma nella parte Modificata (2011-10-18 13:25), un codice C# utilizzando in questo modo.
È inoltre possibile utilizzare WMI:
$user2Find = "user1"
$query = "SELECT * FROM ds_user where ds_sAMAccountName='$user2find'"
$user = Get-WmiObject -Query $query -Namespace "root\Directory\LDAP"
$user.DS_mail
È possibile utilizzare questa soluzione localy sul server o da un computer all'interno del dominio, ma è un po 'più complicato per l'autenticazione a WMI dal di fuori del dominio .
Perché non chiamare con il DC o \\ Dominio \ Sysvol? –