Merci encore
pour la partie : Parcours des OU c'est OK mais modification de l'utilisateur dans l'OU en "dessous" NOK
Ci-dessous mon code du coup
VBS :
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
| Dim objLogFile, fso
ShareName = "share\Home"
set objParent = GetObject("LDAP://OU=Test_Champ_profil,OU=Users,OU=DSI,OU=Services,OU=Users & Groups,OU=Toulouse,DC=*")
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
Set objParentOU = GetObject("LDAP://OU=Test_Champ_profil,OU=Users,OU=DSI,OU=Services,OU=Users & Groups,OU=Toulouse,DC=*)
ListUsersInOU objParentOU
Sub ListUsersInOU(objRootOu)
Dim objTmp
For Each objTmp In objRootOu
'Pour chaque objet User trouvé : affichage du nom de l'utilisateur
If objTmp.Class = "user" Then
If objTmp.HomeDirectory = "\\oldserver\home\%username%" and objTmp.homeDrive = "H:" then
objTmp.HomeDirectory = "\\newserver" & "\" & ShareName & "\" & _
objTmp.Get("sAMAccountName")
objTmp.homeDrive = strDrive
objTmp.SetInfo
objLogFile.WritelIne "- Champ HomeDirectory : " & objTmp.HomeDirectory & vbCrLf & vbTab & " montée sur le lecteur " & objTmp.homeDrive & " est appliquée sur l'utilisateur : " & objTmp.Get("sAMAccountName") & "."
objLogFile.WritelIne vbCrLf
Compteur = Compteur + 1
else
If objTmp.HomeDirectory = "\\newserver" & "\" & ShareName & "\" & objTmp.Get("sAMAccountName") then
objLogFile.WritelIne "- Champ HomeDirectory : l'utilisateur " & objTmp.Get("sAMAccountName") & " a déjà sa Home sur newserver !"
objLogFile.WritelIne vbCrLf
CompteurOK = CompteurOK + 1
End If
If objTmp.HomeDirectory = "" then
objLogFile.WritelIne "- Champ HomeDirectory : l'utilisateur " & objTmp.Get("sAMAccountName") & " n'a pas de Home rensignée !"
objLogFile.WritelIne vbCrLf
CompteurHomeVide = CompteurHomeVide + 1
End If
If objTmp.homeDrive <> "H:" then
objLogFile.WritelIne "- Champ HomeDirectory : l'utilisateur " & objTmp.Get("sAMAccountName") & " a sa Home sur le lecteur " & objTmp.homeDrive & " !"
objLogFile.WritelIne vbCrLf
CompteurLecteur = CompteurLecteur + 1
End If
End If
WScript.Echo "User : " & objTmp.sAMAccountName
'Pour chaque objet OU trouvé : affichage du DN de l'OU
ElseIf objTmp.Class = "organizationalUnit" Then
WScript.Echo "OU : " & objTmp.distinguishedName
ListUsersInOU objTmp
End If
Next
End Sub
'Fin et fermeture du fichier log |
Résultat fenêtre CMD :
D:\Users\****\Desktop>cscript Change_HomeDir_AD_FINAL.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
User : cpso
OU : OU=Test_champ,OU=Test_Champ_profil,OU=Users,OU=DSI,OU=Services,OU=Users & G
roups,OU=Toulouse,DC=*
User : test2013
User : testcpso
- Testcpso et cpso sont dans la même OU Test_Champ_profil
- test2013 est dans l'OU Test_champ qui est dans l'OU Test_Champ_profil
Par contre au niveau du fichier Log :
- Champ HomeDirectory : l'utilisateur cpso n'a pas de Home renseignée !
- Champ HomeDirectory : l'utilisateur cpso a sa Home sur le lecteur !
- Champ HomeDirectory : l'utilisateur testcpso a déjà sa Home sur newserver !
--> Nombre de modIfications sur l'OU de Toulouse : 0
--> Nombre de personnes sur un autre lecteur que H: : 1
--> Nombre de personnes n'ayant pas de lecteur Home : 1
--> Nombre de personnes déjà connectées sur newserver : 1
--> Aucune Trace du user "test2013".
Et quand je regarde dans l'AD, l'user "test2013" n'a pas reçu la modification par le script, il a toujours son HomeDire :
H: \\olserver\home\%username%
et pas
H: \\newserver\share\home\%username%
Merci pour ton retour
Partager