2010-05-06 7 views
2

J'ai une liste d'ordinateurs (stockés dans une base de données) et je veux trouver les administrateurs locaux sur ces ordinateurs par programme afin que je puisse également stocker ces informations dans la base de données. Je comprends que cela peut être fait en utilisant PowerShell. Mais la recherche d'une façon de faire la même chose en utilisant C#Obtention de la liste LocalAdmins pour un ensemble de serveurs

comment puis-je faire

Répondre

3

Je viens d'essayer ce code sur mon ordinateur local et il fonctionne très bien:

 string hostName = "myComputer"; 
     //get machine 
     using (DirectoryEntry machine = new DirectoryEntry("WinNT://" + hostName)) 
     { 
      //get local admin group 
      using (DirectoryEntry group = machine.Children.Find("Administrators", "Group")) 
      { 
       //get all members of local admin group 
       object members = group.Invoke("Members", null); 
       foreach (object member in (IEnumerable)members) 
       { 
        //get account name 
        string accountName = new DirectoryEntry(member).Name; 
        //DO SOMETHING... 
       } 
      }   
     } 

je peux Ne pas vérifier sur les ordinateurs distants jusqu'à ce que je retourne au travail, mais en supposant que vous exécutez sous un compte qui a des autorisations sur l'ordinateur distant, je devrais imaginer que cela fonctionnera.

+0

Merci David pour la réponse. Donc, cela donnera la liste de tous les membres du groupe sur la machine locale ... juste? J'essaye d'obtenir le LocalAdmins sur une liste de machines distantes. Je veux exécuter ce programme à partir de mon bureau et obtenir la liste des administrateurs locaux sur une liste de machines distantes dans le même domaine et un domaine d'approbation. –

+0

Modifié comme ci-dessus. –

+0

Oui .. Cela fonctionne très bien. J'avais juste besoin d'ajouter - en utilisant system.collections.generic en haut. Merci beaucoup .. –

Questions connexes