Löschen eines Computer Objects im AD

  • VB.NET
  • .NET (FX) 4.0

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von v-go.

    Löschen eines Computer Objects im AD

    Hallo Leute,

    hat jemand kurz eine Eingabe für mich, wie man Comptuer Objects im Active Directory via VB.net löschen kann?

    Bin für jede Hilfe dankbar,

    Danke,
    LG :thumbup:
    Servus

    siehe stackoverflow.com/questions/79…e-directory-using-c-sharp

    Beispiel ist zwar C#, aber das sollte bei den paar Zeilen kein Problem sein

    C#-Quellcode

    1. /* Retreiving RootDSE infos
    2. */
    3. string ldapBase = "LDAP://WM2008R2ENT:389/";
    4. string sFromWhere = ldapBase + "rootDSE";
    5. DirectoryEntry root = new DirectoryEntry(sFromWhere, "dom\\jpb", "PWD");
    6. string defaultNamingContext = root.Properties["defaultNamingContext"][0].ToString();
    7. /* Retreiving the computer to remove
    8. */
    9. sFromWhere = ldapBase + defaultNamingContext;
    10. DirectoryEntry deBase = new DirectoryEntry(sFromWhere, "dom\\jpb", ".biènèsph^r^.1966");
    11. DirectorySearcher dsLookForDomain = new DirectorySearcher(deBase);
    12. dsLookForDomain.Filter = "(&(cn=MACHSUPR))"; // MACHSUPR is the computer to delete
    13. dsLookForDomain.SearchScope = SearchScope.Subtree;
    14. dsLookForDomain.PropertiesToLoad.Add("cn");
    15. dsLookForDomain.PropertiesToLoad.Add("distinguishedName");
    16. SearchResultCollection srcComputer = dsLookForDomain.FindAll();
    17. foreach (SearchResult aComputer in srcComputer)
    18. {
    19. /* For each computer
    20. */
    21. DirectoryEntry computerToDel = aComputer.GetDirectoryEntry();
    22. computerToDel.DeleteTree();
    23. computerToDel.CommitChanges();
    24. }
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Danke vielmals für diesen Sourcecode. Habe in mal durch einen Converter gebügelt. Sieht soweit gut aus:

    VB.NET-Quellcode

    1. Function delete_ad_object()
    2. Dim ldapBase As String = LDAP://PATH/
    3. Dim sFromWhere As String = ldapBase & "rootDSE"
    4. Dim root As New DirectoryEntry(sFromWhere, "dom\jpb", "PWD")
    5. Dim defaultNamingContext As String = root.Properties("defaultNamingContext")(0).ToString()
    6. ' Retreiving the computer to remove
    7. sFromWhere = ldapBase & defaultNamingContext
    8. Dim deBase As New DirectoryEntry(sFromWhere, "dom\jpb", ".biènèsph^r^.1966")
    9. Dim dsLookForDomain As New DirectorySearcher(deBase)
    10. dsLookForDomain.Filter = "(&(cn=MACHSUPR))"
    11. ' MACHSUPR is the computer to delete
    12. dsLookForDomain.SearchScope = SearchScope.Subtree
    13. dsLookForDomain.PropertiesToLoad.Add("cn")
    14. dsLookForDomain.PropertiesToLoad.Add("distinguishedName")
    15. Dim srcComputer As SearchResultCollection = dsLookForDomain.FindAll()
    16. For Each aComputer As System.IO.SearchResult In srcComputer
    17. Dim computerToDel As DirectoryEntry = aComputer.GetDirectoryEntry()
    18. computerToDel.DeleteTree()
    19. computerToDel.CommitChanges()
    20. Next
    21. End Function


    Allerdings bekomme ich bei

    VB.NET-Quellcode

    1. For Each aComputer As System.IO.SearchResult In srcComputer

    den Fehler: "Fehler 28 "System.IO.SearchResult" ist in diesem Kontext nicht zugreifbar, da es sich um "Friend" handelt."

    Verstehe die Aussage der Fehlermeldung nicht, was muss ich stattdessen verwenden?

    Lg,
    Dann setzte doch mal einen Breakpoint am Anfang der Function und gehe Schrittweise durch.

    Ich kann das leider nicht testen denn auf der Arbeit habe ich keine Berechtigung dazu und Zuhause kein AD
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Achso,. ja kann man nichts machen.

    --> Ich kann es nicht schrittweise durchgehen, da ich breits beim Versuch das Teil zu debuggen die Fehlermeldung bei "For Each aComputer As System.IO.SearchResult In srcComputer" bekomme. Diese lautet wie in Post #3 ""Fehler 28 "System.IO.SearchResult" ist in diesem Kontext nicht zugreifbar, da es sich um "Friend" handelt."

    v-go schrieb:

    die Fehlermeldung bei "For Each aComputer As System.IO.SearchResult In srcComputer" bekomme

    Du hast doch bestimmt Option Infer On.
    Dann reicht auch For Each aComputer In srcComputer
    Im Zweifel kannst du innerhalb der Schleife casten.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --