2014-11-17 17 views
6

Ho bisogno di scrivere uno script C# che restituisca tutti i gruppi di Active Directory con nomi di gruppi che iniziano con un certo nome. So che può restituire un gruppo usando il seguente codice.Trova gruppi di Active Directory in cui nome gruppo come

PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 
GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "Groupname"); 

Tuttavia, voglio che tutti i gruppi in cui inizia il Groupname dicano "GroupPrefix". Quindi voglio attraversare tutti questi gruppi usando il seguente codice e memorizzare i "membri" in un array/elenco che posso usare in seguito per la ricerca.

foreach (UserPrincipal p in grp.GetMembers(true)) 

Gradirei molto l'aiuto che posso ottenere con questo.

risposta

6

è possibile utilizzare un PrincipalSearcher e un "Query-by-example" principale per fare la tua ricerca:

// create your domain context 
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain)) 
{ 
    // define a "query-by-example" principal - here, we search for a GroupPrincipal 
    // and with the name like some pattern 
    GroupPrincipal qbeGroup = new GroupPrincipal(ctx); 
    qbeGroup.Name = "GroupPrefix*"; 

    // create your principal searcher passing in the QBE principal  
    PrincipalSearcher srch = new PrincipalSearcher(qbeGroup); 

    // find all matches 
    foreach(var found in srch.FindAll()) 
    { 
     // do whatever here - "found" is of type "Principal" 
    } 
} 

Se non l'hai già - assolutamente leggere l'articolo di MSDN Managing Directory Security Principals in the .NET Framework 3.5 che mostra bene come fare il miglior utilizzo delle nuove funzionalità in System.DirectoryServices.AccountManagement. Oppure vedi lo spazio dei nomi MSDN documentation on the System.DirectoryServices.AccountManagement.

Naturalmente, a seconda delle necessità, si potrebbe voler specificare altre proprietà su quella principale gruppo "di query-by-example" si crea:

  • DisplayName (tipicamente: nome + spazio + cognome)
  • SAM Account Name - il tuo/AD nome di account di Windows

È possibile specificare una qualsiasi delle proprietà sul GroupPrincipal e usare quelli come "query-by-example" per il vostro PrincipalSearcher.

+1

Il link della rivista è morto. – TernaryTopiary

+0

Sì, il primo link è morto –

Problemi correlati