limonadoo
Goto Top

Tool zum Anlegen von AD Gruppen gesucht

Hallo,

wir sind gerade dabei, alle Verzeichnisse für alle Abteilungen nach den Best Practice Regeln von Microsoft zu überarbeiten (Globale Gruppe in Lokale Gruppe, NTFS Rechte auf die Lokale Gruppe und die User in die Globale Gruppe).

Das funktioniert auch sehr gut, nur ist es ziemlich aufwendig, weil das pro unterordner 4 Gruppen sind (2x Local R+W und 2x Global R+W) und bedeutet ca. 50 Gruppen pro Verzeichnis und 30 Verzeichnisse.

Ich bin auf der Suche nach einem Tool, das mir genau das abnimmt. D.h. Nice-to-Have Lösung wäre: Ich würde eine Excel oder .txt anlegen, da reinschreiben, wie die Gruppen heißen, ob lokal oder global und dann in einer OU anlegen lassen und später diese dann innerhalb des ADs verschieben. Zwei Programme (einmal nur globale und einmal nur lokale Gruppen) wären auch OK.

Domäne ist komplett W2K3.

Kennt jemand so ein Tool?

Habt Dank.

Content-Key: 44664

Url: https://administrator.de/contentid/44664

Printed on: April 19, 2024 at 04:04 o'clock

Member: bastla
bastla Nov 16, 2006 at 18:24:49 (UTC)
Goto Top
Hallo limonadoo!

Aus MS-Materialien zusammengebastelt:
'MakeGroups.vbs  
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
Const ADS_PROPERTY_APPEND = 3 

Const sDomain = "dc=test,dc=local"  
Const sList = "C:\Gruppenliste.txt"  

Set fso = WScript.CreateObject("Scripting.FileSystemObject")  
Set oGrpList = fso.OpenTextFile(sList, 1)

Do While Not oGrpList.AtEndOfStream
	'Read GroupName  
	sGroupName = oGrpList.ReadLine
	sGroupLocal =  "L" & sGroupName 'Benennung Lokale Gruppe  
	sGroupGlobal = "G" & sGroupName 'Benennung Globale Gruppe  

	'Create Local Group  
	Set objOU = GetObject("LDAP://cn=users," & sDomain)  
	Set objGroup = objOU.Create("Group", "cn=" & sGroupLocal)  

	objGroup.Put "sAMAccountName", sGroupLocal  
	objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP Or _  
		ADS_GROUP_TYPE_SECURITY_ENABLED
	objGroup.SetInfo

	'Create Global Group  
	Set objOU = GetObject("LDAP://cn=users," & sDomain)  
	Set objGroup = objOU.Create("Group", "cn=" & sGroupGlobal)  

	objGroup.Put "sAMAccountName", sGroupGlobal  
	objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or _  
		ADS_GROUP_TYPE_SECURITY_ENABLED
	objGroup.SetInfo

	'Add Global Group To Local Group  
	Set objGroup = GetObject("LDAP://cn=" & sGroupLocal & ",cn=Users," & sDomain)   

	objGroup.PutEx ADS_PROPERTY_APPEND, "member", _  
		Array("cn=" & sGroupGlobal & ",cn=Users," & sDomain)  
	objGroup.SetInfo
Loop
oGrpList.Close
Das Script liest eine Listendatei "C:\Gruppenliste.txt" zeilenweise aus, erzeugt je Eintrag eine Lokale (mit Präfix "L") und eine Globale (Präfix "G") Sicherheitsgruppe in der OU "Users" und nimmt die Globale Gruppe in die Lokale Gruppe auf.

Die beiden "Const"-Einträge für Domäne und Listendatei sind an Deine Gegebenheiten anzupassen, desgleichen die Namenskonventionen für die Gruppen.

Errorhandling und Logging sind nicht implementiert.

HTH
bastla
Member: wuwu
wuwu Jan 08, 2009 at 12:17:47 (UTC)
Goto Top
Hallo bastla,

Ich habe in meiner Liste 10 Einträge (Gruppen die im AD angelegt werden sollten! Das funktioniert, jetzt habe ich noch das Problem: Die Gruppe 3 aus dem Array müßte in die Gruppe 5 & 8 der Array Einträge, wie kann ich das lösen?
Ich hoffe du kannst mir helfen!

Const OU = "ou=Test,ou=Untergruppe,ou=Groups,dc=Firma,dc=corp"
Const List = "C:\Temp\Gruppenliste.txt"
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
Set objOU = GetObject("LDAP://" & OU)
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists(List) Then
WScript.Echo "Datei " & List & " nicht gefunden!"
WScript.Quit 1
End If
arrGruppen = Split(fso.OpenTextFile(List, 1, False).ReadAll, vbCrLF)
for each strGruppe In arrGruppen
MakeGroup strGruppe
wScript.Echo "Erstelle Gruppe: " & strGruppe & i
Next
WScript.Echo "Fertig."
Sub MakeGroup(strGrName)
Set objGroup = objOU.Create("Group", "cn=" & strGrName)
objGroup.Put "sAMAccountName", strGrName
objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.Put "description", "Beschreibung"
objGroup.SetInfo
End Sub
Member: bastla
bastla Jan 08, 2009 at 18:35:55 (UTC)
Goto Top
Hallo wuwu!

Versuch es so:
Const OU = "ou=Test,ou=Untergruppe,ou=Groups,dc=Firma,dc=corp"  
Const List = "C:\Temp\Gruppenliste.txt"  
intGr = 2 'Index der Gruppe, die hinzugefügt werden soll  
arrHinzu = Array(4,7) 'Indizes der Gruppen, in denen obige Gruppe Mitglied werden soll  

Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
Const ADS_PROPERTY_APPEND = 3
Set objOU = GetObject("LDAP://" & OU)  

Set fso = CreateObject("Scripting.FileSystemObject")  
If Not fso.FileExists(List) Then
    WScript.Echo "Datei " & List & " nicht gefunden!"  
    WScript.Quit 1
End If
arrGruppen = Split(fso.OpenTextFile(List, 1, False).ReadAll, vbCrLF)

For Each strGruppe In arrGruppen
    WScript.Echo "Erstelle Gruppe: " & strGruppe  
    MakeGroup strGruppe
Next

'Mitgliedschaften setzen  
strGr = "cn=" & arrGruppen(intGr) & "," & OU  
For Each intHinzu In arrHinzu
    WScript.Echo "Füge """ & arrGruppen(intGr) & """ der Gruppe """ & arrGruppen(intHinzu) & """ hinzu"  
    Set objGroup = GetObject("LDAP://cn=" & arrGruppen(intHinzu) & "," & OU)  
    objGroup.PutEx ADS_PROPERTY_APPEND, "member", Array(strGr)  
    objGroup.SetInfo
Next
WScript.Echo "Fertig."  

Sub MakeGroup(strGrName)
Set objGroup = objOU.Create("Group", "cn=" & strGrName)  
objGroup.Put "sAMAccountName", strGrName  
objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP Or _  
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.Put "description", "Beschreibung"  
objGroup.SetInfo
End Sub
Grüße
bastla