TheDonMiguel 11 Geschrieben 28. Juni 2006 Melden Teilen Geschrieben 28. Juni 2006 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 Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 28. Juni 2006 Melden Teilen Geschrieben 28. Juni 2006 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 Zitieren Link zu diesem Kommentar
TheDonMiguel 11 Geschrieben 28. Juni 2006 Autor Melden Teilen Geschrieben 28. Juni 2006 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 Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 29. Juni 2006 Melden Teilen Geschrieben 29. Juni 2006 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.