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

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...