Script ajout de compte user en fonction de son appartenance aux groupes AD
Bonsoir à tous,
Voilà, je fais des migrations users/pc pour ma boite d'un ancien domaine vers un nouveau. Les groupes et les comptes users sont migré avec sid history. Je voudrais simplement faire un script qui check la presence du compte migré (qui a été au passage renommé) dans une liste predefinie de groupes (anciens groupes de montages) et en fonction de la presence ou non du compte users dans ces groupes là, l'action d'ajout du compte user migré sera ajouté ou non dans les nouveaux groupes de montages crée from scratch dans la cible.
En shématisan cela donnerait ceci :
Je prend un fichier text en entrée que je lis
Je recupere le login du user migré (en 4eme position)
Je vais voir dans l'ad si ce compte est present dans cette liste de groupes que je connais :
Groupe1 -> Si present dans ce groupe alors ajout du compte user dans ce groupe de montage Grpe_mount1
Groupe2 -> Si non present, ne rien faire et passage au test suivant...
Groupe3 -> Etc ...
Je possede ce code ci mais il est pas du tout adapté, car je dois pouvoir lire le fichier text en entrée afin d'automsatiser tout cela.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
On Error Resume Next
'Déclaration des variables'
Dim objGroupList, objADObject, strGroup, objUser
Const ADS_PROPERTY_APPEND = 3
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshVarEnv = WshShell.Environment("PROCESS")
strNetBiosDomain = WshVarEnv.Item ("USERDOMAIN")
strLogonServer = WshShell.ExpandEnvironmentStrings("%Logonserver%")
strUserName = WshShell.ExpandEnvironmentStrings("%USERNAME%")
Set objUser = GetObject("WinNT://" & strNetBiosDomain & "/" _
& strUserName & ",user")
'Condition 1 : Si l'utilisateur appartient à "Groupe De montage source XXX1"
If IsMember("Groupe-XXX1") Then
Set objGroup = GetObject _
("LDAP://cn=Atl-Users,cn=Users,dc=NA,dc=fabrikam,dc=com")
objGroup.PutEx ADS_PROPERTY_APPEND, _
"member", Array("cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objGroup.SetInfo
End If
'Condition 2 : Si l'utilisateur appartient à Groupe de montage source XXX2"
If IsMember("Groupe-XXX2") Then
Set objGroup = GetObject _
("LDAP://cn=Atl-Users,cn=Users,dc=NA,dc=fabrikam,dc=com")
objGroup.PutEx ADS_PROPERTY_APPEND, _
"member", Array("cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objGroup.SetInfo
End If
'Fin du script'
WScript.quit
'Les 2 Fonctions de test d'appartenance aux groupes'
Function IsMember(strGroup)
If IsEmpty(objGroupList) Then
Call ReadGroups
End If
IsMember = objGroupList.Exists(strGroup)
End Function
Sub ReadGroups
Dim objGroup
Set objGroupList = CreateObject("Scripting.Dictionary")
objGroupList.CompareMode = vbTextCompare
For Each objGroup In objUser.Groups
objGroupList(objGroup.name) = True
Next
Set objGroup = Nothing
End Sub |
Si vous pouviez me donner un coup de main, car je debute en vb 8O et je galere pas mal!
Merci