Jump to content

Mit VBS eine Gruppe im AD anlegen und bisschen mehr...


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

Empfohlene Beiträge

Hallo zusammen,

 

ich muss für ein Projekt automatisiert eine Gruppe im AD anlegen. Das Ziel ist, dass eine Globale Gruppe erstellt wird, dieser eine bestehende Globale Gruppe als Member hinzugefügt wird. Als Krönung sollte dann die neu erstellte als Member einer lokalen Gruppe hinzugefügt werden...

 

Ich habe mal paar Scripts von M$ angeschaut, leider komme ich nicht auf einen grünen Zweig. Kann mir jemand helfen?

 

Danke und Gruss,

TDM

Link zu diesem Kommentar

Hi,

wenn es nicht mit VBS sein muss, würde auch eine .cmd reichen:

 

 

REM erste Zeile fügt myGroup hinzu, scope und secgrp kann man weglassen, da jeweils der default benötigt wird

dsadd group "CN=myGroup,OU=myOU,DC=mydomain,DC=local" -scope g -secgrp yes -desc "beschreibung"

 

REM zweite Zeile fügt dieser Gruppe eine Gruppe myOldGroup hinzu

dsmod group "CN=myGroup,OU=myOU,DC=mydomain,DC=local" -addmbr "CN=myOldGroup,OU=myOU,DC=mydomain,DC=local"

 

REM die neu erstelle myGroup wir jetzt einer lokalen Gruppe "myLocalGroup" hinzugefügt

dsmod group "CN=myLocalGroup,OU=myOU,DC=mydomain,DC=local" -addmbr "CN=myGroup,OU=myOU,DC=mydomain,DC=local"

 

Das ganze dann als .cmd abspeichern, fertig. Wenn's wirklich unbedingt .vbs sein muss, einfach nochmal melden, ist für den vorliegenden Fall zwar umständlicher, aber machbar.

 

Gruß

 

woiza

Link zu diesem Kommentar

Danke für die Antwort. VB währe schon cool, könnte aber sonst auch das CMD einbauen. Ich habe bei VB schon einen Ansatz von Microsoft Vorlagen, aber irgendwie klappt das hinzufügen der "member" nicht... Hier einen Auszug:

 

Const ADS_PROPERTY_APPEND = 3

 

Set objGroup = GetObject _

("LDAP://cn=Sea-Users,cn=Users,dc=NA,dc=fabrikam,dc=com")

 

objGroup.PutEx ADS_PROPERTY_APPEND, "member", _

Array("cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com", _

"cn=Executives,ou=Management,dc=NA,dc=fabrikam,dc=com", _

"cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")

 

objGroup.SetInfo

 

Danke & Gruss,

TDM

Link zu diesem Kommentar

Hallo,

 

dein Code kommt mir etwas komisch vor. Ich nehme mal an, dass CN=Sea-Users die zu erstellende Gruppe ist.

 

Du machst aber gleich ein GetObject, d.h. du versuchst auf ein bestehendes Objekt zuzugreifen.

 

Die PutEx Funktion kann bestehende Attribute eines Objekts ändern, aber das willst du ja zumindest am Anfang noch nicht.

 

Die Gruppe kannst du folgendermaßen erstellen:

 

' ###createGroup.vbs###

'Grouptypedefs
Public Const ADS_GROUP_TYPE_GLOBAL_GROUP = &H2
Public Const ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP = &H4
Public Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &H8
Public Const ADS_GROUP_TYPE_SECURITY_ENABLED = &H80000000

'------Configuration------
'in strGroupParent den DN der OU, in der die Gruppe erstellt werden soll, eintragen
strGroupParent = "OU=myOU,DC=mydomain,DC=local"

'Hole das Parentobject
set targetOU = GetObject("LDAP://" & strGroupParent)

'GroupObject wird im Cache erstellt
set objGroup = targetOU.Create("group","cn=" & "myGroup")

'-----Eigenschaften des Gruppenobjekts werden gesetzt-----
'die passenden Group Types werden mit logischem "or" verknüpft
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP _
                        Or ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.Put "description", "Meine Beschreibung"

'die beiden müsste man auch weglassen können, verdeutlicht aber das Prinzip
objGroup.Put "samAccountName", "myGroup"
objGroup.Put "displayname", "myGroup"

'Gruppe wirklich im AD anlegen
objGroup.SetInfo

'der Gruppe eine Membergruppe hinzufügen

objGroup.Add("LDAP://CN=myOldGroup," & strGroupParent) 

'diese Gruppe einer neuen Gruppe hinzufügen; 
'ich gehe immer davon aus, dass alle Gruppen in einer OU liegen, sonst Pfade anpassen

'erst wieder das Objekt holen
set objLocalGroup = getObject("LDAP://CN=myLocalGroup," & strGroupParent)

'dann dem neuen Objekt die Gruppe hinzufügen
'man könnte auch gleich den LDAP-Pfad verwenden, aber ich kann den DN auch 
'programmatisch ermitteln, das macht das Script flexibler
objLocalGroup.Add("LDAP://" & objGroup.Get("distinguishedName"))

 

 

Ich hoffe das hilft, ich habe versucht die interessanten Stellen zu kommentieren (im Gegensatz zu meinen eigenen Skripten :D ). Falls noch Fragen sind, her damit.

 

Gruß

 

woiza

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...