Bonjour à tous,
je viens souvent sur ce forum afin de trouver des informations à mes problèmes de scripting, et je vous remercie pour l'aide que j'ai pu trouver ainsi que pour votre aide à mon problème actuel.
J'ai déjà lu des posts sur des modifications sur un Active Directory en vbs.
Par contre, je n'ai pas vu (ou réussi à voir) de solution à mon problème actuel :
Pour faire clair, je dois modifier le chemin HomeDirectory de (presque tous les utilisateurs) présents dans une certaine OU mais aussi dans toutes les "sous-OU" de cette première OU :
OU=Users & Groups,OU=Toulouse,DC=*,DC=*,DC=*,DC=*,DC=*
et donc modifier tous les utilisateurs qu'on peut trouver sous cette OU contenant d'autres OU bien évidemment (OU DSI, OU DAF, etc).
J'ai déjà fait le script .vbs me permettant de modifier le lecteur et le chemin du HomeDir pour chaque utilisateur dans une OU précisée mais je n'arrive pas à aller dans les autres dossiers comme l'on peut faire avec SubFolders...
Ci-dessous mon code (pour des raisons professionnelles et de confidentialité, j'ai du cacher les noms et chemins exacts, merci de votre compréhension) :
Avec cela, c'est bon pour la modification du HomeDir et du lecteur réseau, mais si vous pouvez m'aider sur comment descendre dans les sous-OU, vous seriez vraiment adorable !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 '######################################################### 'Script .vbs pour modification des objets utilisateurs 'Changement du champ Home Directory des utilisateurs 'dans une OU précisée ' 'version 1.3 'Author :* 'Release : */2013 ' 'Test sur l'OU des users de la DSI Toulouse ' '######################################################### 'Déclaration des variables principales 'ShareName --> Dossier de partage réseau 'objParent --> OU où chercher les objets User, Array sur User 'strDrive --> Lettre de montage du lecteur 'Compteur --> Connaître le nombre de modification Dim objLogFile, fso ShareName = "share\Home" set objParent = GetObject("LDAP://OU=Users & Groups,OU=Toulouse,DC=*") objParent.Filter = Array("user") strDrive = "H:" Compteur = 0 CompteurLecteur = 0 CompteurHomeVide = 0 CompteurOK = 0 'Déclaration Logfile 'Ouverture du fichier Log Change_HomeDir_AD_Toulouse Set fso = CreateObject("Scripting.FileSystemObject") Set objLogFile = fso.OpenTextFile ("C:\Change_HomeDir_AD_Toulouse_" &day(now) & "_" &month(now) & "_" &year(now)&".log",2,true) objLogFile.Writeline vbTab & "#########################################" objLogFile.Writeline vbTab & "# Script started at " & Now & " #" objLogFile.Writeline vbTab & "#########################################" objLogFile.Writeline vbCrLf 'Pour chaque objet User trouvé 'Changement du champ HomeDir de l'utilisateur 'Si le HomeDir est sur Oldserver for each objUser in objParent if objUser.HomeDirectory = "\\oldserver\home\%username%" and objUser.homeDrive = "H:" then objUser.HomeDirectory = "\\newserver" & "\" & ShareName & "\" & _ objUser.Get("sAMAccountName") objUser.homeDrive = strDrive objUser.SetInfo objLogFile.Writeline "- Champ HomeDirectory : " & objUser.HomeDirectory & vbCrLf & vbTab & " montée sur le lecteur " & objUser.homeDrive & " est appliquée sur l'utilisateur : " & objUser.Get("sAMAccountName") & "." objLogFile.Writeline vbCrLf Compteur = Compteur + 1 else if objUser.HomeDirectory = "\\newserver" & "\" & ShareName & "\" & objUser.Get("sAMAccountName") then objLogFile.Writeline "- Champ HomeDirectory : l'utilisateur " & objUser.Get("sAMAccountName") & " a déjà sa Home sur newserver !" objLogFile.Writeline vbCrLf CompteurOK = CompteurOK + 1 end if if objUser.HomeDirectory = "" then objLogFile.Writeline "- Champ HomeDirectory : l'utilisateur " & objUser.Get("sAMAccountName") & " n'a pas de Home rensignée !" objLogFile.Writeline vbCrLf CompteurHomeVide = CompteurHomeVide + 1 end if if objUser.homeDrive <> "H:" then objLogFile.Writeline "- Champ HomeDirectory : l'utilisateur " & objUser.Get("sAMAccountName") & " a sa Home sur le lecteur " & objUser.homeDrive & " !" objLogFile.Writeline vbCrLf CompteurLecteur = CompteurLecteur + 1 end if end if next 'Fin et fermeture du fichier log objLogFile.Writeline vbTab & "--> Nombre de modifications sur l'OU de Toulouse : " & Compteur objLogFile.Writeline vbTab & "--> Nombre de personnes sur un autre lecteur que H: : " & CompteurLecteur objLogFile.Writeline vbTab & "--> Nombre de personnes n'ayant pas de lecteur Home : " & CompteurHomeVide objLogFile.Writeline vbTab & "--> Nombre de personnes déjà connectées sur newserver : " & CompteurOK objLogFile.Writeline vbCrLf objLogFile.Writeline vbTab & "#######################################" objLogFile.Writeline vbTab & "# Script ended at " & Now & " #" objLogFile.Writeline vbTab & "#######################################" objLogFile.close 'Cleanup des objets Set fso = Nothing Set objLogFile = Nothing 'Sortie du script WScript.Quit()
merci d'avance pour votre aide et bonne journée à tous
Filmaster.
Partager