comment supprimer un compte d’ordinateur d’Active Directory à l’aide de c #

Existe-t-il un exemple qui supprime le compte d’ordinateur d’AD en utilisant C #?

J’ai cherché de nombreuses sources, mais toutes concernent le compte d’utilisateur.

ajouté mon code ici, j’ai toujours eu des erreurs pour une raison quelconque.

public static bool checkExistingPC(ssortingng compName,ssortingng userName,ssortingng userPwd ) { try { DirectoryEntry entry = new DirectoryEntry("LDAP://test.com",userName,userPwd,AuthenticationTypes.Secure); DirectorySearcher mySearcher = new DirectorySearcher(entry); mySearcher.Filter = "(&(objectClass=computer)(|(cn=" + compName + ")(dn=" + compName + ")))"; foreach (SearchResult result in mySearcher.FindAll()) { if (result != null) { MessageBox.Show("computer GetDirectoryEntry():" + result.Path+"\n"+"computer path: "+result.Path); DirectoryEntry entryToRemove = new DirectoryEntry(result.Path,userName,userPwd); entry.Children.Remove(entryToRemove); return true; } else { return false; } } } catch (Exception e) { MessageBox.Show(e.Message); } return false; } 

Pour utiliser ADSI sous System.DirectoryServices utilisez un mécanisme de validation. Voici un exemple de travail:

 /* Retreiving RootDSE infos */ ssortingng ldapBase = "LDAP://WM2008R2ENT:389/"; ssortingng sFromWhere = ldapBase + "rootDSE"; DirectoryEntry root = new DirectoryEntry(sFromWhere, "dom\\jpb", "PWD"); ssortingng defaultNamingContext = root.Properties["defaultNamingContext"][0].ToSsortingng(); /* Retreiving the computer to remove */ sFromWhere = ldapBase + defaultNamingContext; DirectoryEntry deBase = new DirectoryEntry(sFromWhere, "dom\\jpb", ".biènèsph^r^.1966"); DirectorySearcher dsLookForDomain = new DirectorySearcher(deBase); dsLookForDomain.Filter = "(&(cn=MACHSUPR))"; // MACHSUPR is the computer to delete dsLookForDomain.SearchScope = SearchScope.Subtree; dsLookForDomain.PropertiesToLoad.Add("cn"); dsLookForDomain.PropertiesToLoad.Add("distinguishedName"); SearchResultCollection srcComputer = dsLookForDomain.FindAll(); foreach (SearchResult aComputer in srcComputer) { /* For each computer */ DirectoryEntry computerToDel = aComputer.GetDirectoryEntry(); computerToDel.DeleteTree(); computerToDel.CommitChanges(); } 

Si vous êtes sur .NET 3.5 et supérieur (si vous n’êtes pas – temps de mettre à niveau!), Vous devriez vérifier l’espace de noms System.DirectoryServices.AccountManagement (S.DS.AM). Lisez tout a propos de ça ici:

  • Gestion des principes de sécurité de l’annuaire dans le .NET Framework 3.5
  • Documents MSDN sur System.DirectoryServices.AccountManagement

En gros, vous pouvez définir un contexte de domaine et trouver facilement des utilisateurs et / ou des groupes dans AD:

 // set up domain context PrincipalContext ctx = new PrincipalContext(ContextType.Domain); // find the computer in question ComputerPrincipal computer = ComputerPrincipal.FindByIdentity(ctx, "NAME"); // if found - delete it if (computer != null) { computer.Delete(); } 

Le nouveau S.DS.AM facilite vraiment la manipulation des utilisateurs, des ordinateurs et des groupes dans AD!

Ce n’est peut-être pas exactement ce que vous recherchez, mais ce site fournit plusieurs exemples de code permettant de travailler avec AD en C #, notamment la suppression d’un groupe de sécurité et la suppression d’un utilisateur d’un groupe.

Utilisez l’espace de noms WMI et / ou System.DirectoryServices (http://msdn.microsoft.com/en-us/library/system.directoryservices.aspx).