Jump to content
Sign in to follow this  
TheDonMiguel

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

Recommended Posts

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

Share this post


Link to post

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

Share this post


Link to post

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

Share this post


Link to post

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

Share this post


Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...