Group Nesting per VBS Skript bricht ab
Hallo
Ich möchte mit folgendem Skript, welchen ich stündlich über 2 Gruppen laufen lassen möchte, deren Member sicherstellen. So will ich sicherstellen, dass sich gewisse Gruppen in der entsprechenden Gruppe befinden. Ihr findet das komisch? Wäre es auch, hätten wir nicht eine AD Verwaltungssoftware, welche keine Verschachtelungen erlaubt. Wenn diese Gruppen generiert werden sind unsere manuell hinzugefügten Gruppen wieder raus. Deshalb will ich mit meinem Skript sicherstellen, dass diese speziellen Gruppen automatisch hinzugefügt werden.
Mein Problem ist aber, dass der Skript abbricht, sobald er einen Eintrag gefunden hat, welcher bereits existiert. Was muss ich einbauen, damit er trotzdem jeden Eintrag abbarbeitet?
Adds two groups (Executives and Scientists) and one user account (MyerKen) to the Sea-Users group in Active Directory.
Const ADS_PROPERTY_APPEND = 3
Set objGroup = GetObject _
("LDAP://cn=Man_Gen,cn=Groups,dc=NA,dc=fabrikam,dc=com")
objGroup.PutEx ADS_PROPERTY_APPEND, "member", _
Array("cn=Auto_Gen1,ou=Groups,dc=NA,dc=fabrikam,dc=com", _
"cn=Auto_Gen2,ou=Groups,dc=NA,dc=fabrikam,dc=com", _
"cn=Auto_Gen3,ou=Groups,dc=NA,dc=fabrikam,dc=com")
objGroup.SetInfo
Es ist in der Praxis nie der Fall, dass sämtliche Gruppen rausfallen. Deshalb ist es wichtig, dass das Skript bei einem bereits vorhandenen Gruppeneintrag bis zum Ende weiterfährt. Wäre es sinnvoller für jede hinzuzufügende Gruppe eine IF Schlaufe zu integrieren? Wenn ja, wie würde man das am elegantesten tun?
Gruss
Ich möchte mit folgendem Skript, welchen ich stündlich über 2 Gruppen laufen lassen möchte, deren Member sicherstellen. So will ich sicherstellen, dass sich gewisse Gruppen in der entsprechenden Gruppe befinden. Ihr findet das komisch? Wäre es auch, hätten wir nicht eine AD Verwaltungssoftware, welche keine Verschachtelungen erlaubt. Wenn diese Gruppen generiert werden sind unsere manuell hinzugefügten Gruppen wieder raus. Deshalb will ich mit meinem Skript sicherstellen, dass diese speziellen Gruppen automatisch hinzugefügt werden.
Mein Problem ist aber, dass der Skript abbricht, sobald er einen Eintrag gefunden hat, welcher bereits existiert. Was muss ich einbauen, damit er trotzdem jeden Eintrag abbarbeitet?
Adds two groups (Executives and Scientists) and one user account (MyerKen) to the Sea-Users group in Active Directory.
Const ADS_PROPERTY_APPEND = 3
Set objGroup = GetObject _
("LDAP://cn=Man_Gen,cn=Groups,dc=NA,dc=fabrikam,dc=com")
objGroup.PutEx ADS_PROPERTY_APPEND, "member", _
Array("cn=Auto_Gen1,ou=Groups,dc=NA,dc=fabrikam,dc=com", _
"cn=Auto_Gen2,ou=Groups,dc=NA,dc=fabrikam,dc=com", _
"cn=Auto_Gen3,ou=Groups,dc=NA,dc=fabrikam,dc=com")
objGroup.SetInfo
Es ist in der Praxis nie der Fall, dass sämtliche Gruppen rausfallen. Deshalb ist es wichtig, dass das Skript bei einem bereits vorhandenen Gruppeneintrag bis zum Ende weiterfährt. Wäre es sinnvoller für jede hinzuzufügende Gruppe eine IF Schlaufe zu integrieren? Wenn ja, wie würde man das am elegantesten tun?
Gruss
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 108716
Url: https://administrator.de/contentid/108716
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo RetroDude!
Eigentlich sollte es ja genügen, mit einem "On Error Resume Next" den Fehler zu übergehen - sinnvoll ist dies aber nur, wenn Du versuchst, jede Gruppe einzeln hinzuzufügen, also (ungetestet):
Grüße
bastla
Eigentlich sollte es ja genügen, mit einem "On Error Resume Next" den Fehler zu übergehen - sinnvoll ist dies aber nur, wenn Du versuchst, jede Gruppe einzeln hinzuzufügen, also (ungetestet):
Const ADS_PROPERTY_APPEND = 3
Set objGroup = GetObject _
("LDAP://cn=Man_Gen,cn=Groups,dc=NA,dc=fabrikam,dc=com")
MyGroups = Array( _
"cn=Auto_Gen1,ou=Groups,dc=NA,dc=fabrikam,dc=com", _
"cn=Auto_Gen2,ou=Groups,dc=NA,dc=fabrikam,dc=com", _
"cn=Auto_Gen3,ou=Groups,dc=NA,dc=fabrikam,dc=com")
On Error Resume Next
For Each Group In MyGroups
objGroup.PutEx ADS_PROPERTY_APPEND, "member", Array(Group)
objGroup.SetInfo
Next
On Error Goto 0
bastla
Hallo RetroDude!
Das könnte hier so aussehen:
Da in VBS alle Variablen "global" sind, müssen "objGroup" und "MyGroups" noch nicht einmal als Argumente übergeben werden.
Grüße
bastla
Du meinst in eine Funktion und diese dann immer aufrufen?
Streng genommen ist eine "Function" dadurch gekennzeichnet, dass sie einen Rückgabewert liefert, während ein "Sub" dies nicht tut - aber grundsätzlich: ja.Das könnte hier so aussehen:
Const ADS_PROPERTY_APPEND = 3
'erste Gruppe
Set objGroup = GetObject _
("LDAP://cn=Man_Gen,cn=Groups,dc=NA,dc=fabrikam,dc=com")
MyGroups = Array( _
"cn=Auto_Gen1,ou=Groups,dc=NA,dc=fabrikam,dc=com", _
"cn=Auto_Gen2,ou=Groups,dc=NA,dc=fabrikam,dc=com", _
"cn=Auto_Gen3,ou=Groups,dc=NA,dc=fabrikam,dc=com")
Eintragen 'Aufruf des Unterprogrammes
' nächste Gruppe
Set objGroup = GetObject _
("LDAP://cn=Test_Gen,cn=Groups,dc=NA,dc=fabrikam,dc=com")
MyGroups = Array( _
"cn=Auto_Gen11,ou=Groups,dc=NA,dc=fabrikam,dc=com", _
"cn=Auto_Gen12,ou=Groups,dc=NA,dc=fabrikam,dc=com")
Eintragen
' ... and so on.
Sub Eintragen
On Error Resume Next
For Each Group In MyGroups
objGroup.PutEx ADS_PROPERTY_APPEND, "member", Array(Group)
objGroup.SetInfo
Next
On Error Goto 0
End Sub
Grüße
bastla