Jump to content

Objekte anhand der SID finden


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo Leute,

 

vielleicht war ich blind, aber ich habe das Theema nicht gefunden:

 

Weiß jemand eine möglichst elegante Lösung, wie ich anhand der SID die Objekte ausfindig machen kann?

 

ggf. gleich durch Eingabe mehrerer SIDs?

 

Geht das dann auch, wenn die Objekte gelöscht wurden?

 

Wir haben unsere Verteiler-Struktur umgebaut. Dabei wurden versehentlich einige alte Verteiler gelöscht - die würden wir halt gerne wieder habn, um das Ergebnis zu vergleichen...

 

Grüße

Geschrieben

Hallo,

 

ganz einfach: Du musst gar nicht nach einem Objekt mit einer bestimmten SID suchen, sondern du kannst dich per ADSI-Scripting auch direkt mit einem Objekt verbinden, dass eine bestimmte SID hat :D. Danach hast du ja direkt Zugriff auf alle Eigenschaften wie z.B. Objektname, Anmeldename, Gruppenmitgliedschaften etc...

 

Ich zitiere mal aus dem betreffenden SelfADSI-Artikel plus angefügtem Beispiel:

 

SelfADSI : Microsoft Security Descriptor (SID) Attribute :

 

LDAP Bind zu Objekten mit SIDs anstatt mit dem Distinguished Name

 

Eine interessante Variation der Suche nach Objekten mit einer vorgegebenen SID: Man kann beim Verbinden mit Objekten (LDAP Bind) auch einfach deren SID verwenden, wenn man folgende Syntax einhält

 

<SID=S-1-5-21-34672221-56910222-80333210-57321189-511> (Beispiel)

 

Sogar die puren HexStrings der SIDs lassen sich hier zum BIND benutzen:

<SID=0105000000000005150000001b0e683dbf16479eb5a59ec158040000> (Beispiel)

 

Diese Technik können wir verwenden, um die Liste der direkten und indirekten Gruppenmitgliedschaften viel eleganter als im letzten Beispiel zu erhalten:

 

'Sie müssen hier andere Namen und Anmeldedaten aus Ihrer eigene Umgebung angeben!
Set obj = GetObject("LDAP://cn=Foeckeler,cn=Users,dc=cerrotorre,dc=de")
obj.GetInfoEx Array("tokenGroups"), 0                   'tokenGroups ist ein Operational Attribut und muß extra angefordert werden
groupListRaw = obj.GetEx("tokenGroups")

WScript.Echo obj.cn

For i = 0 To UBound(groupListRaw)
   sidHex = OctetToHexStr(groupListRaw(i))

   Set obj = GetObject("LDAP://<SID=" & sidHex & ">")
   WScript.Echo "---> " & obj.distinguishedName
Next


Function OctetToHexStr(var_octet)
'wandelt reine Binärdaten (Byte-Array) in einen String mit den Hexadezimalwerten um.
   Dim n
   OctetToHexStr = ""
   For n = 1 To lenb(var_octet)
       OctetToHexStr = OctetToHexStr & Right("0" & hex(ascb(midb(var_octet, n, 1))), 2)
   Next
End Function

 

Gruss,

Philipp

Geschrieben

Allerdings: Du kommst mit ADSI-Scripting nicht an gelöschte Objekte heran...Versuchs mal mit dem Lazarus, einem kostenlosen Tool für den Zugriff/die Wiederherstellung gelöschter AD-Objekte:

 

LAZARUS - Active Directory Deleted Objects Recovery

 

Ob du dann wirklich die Verteiler plus Mitgliedern wiederherstellen kannst, hängt davon ab, ob du den so genannten AD Recycle Bin in Deinem AD Forest aktiviert hast. Steht aber alles auf der Seite vom Lazarus ganz gut erklärt....

 

Gruß,

Philipp

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...