L'objectif du script est de copier les groupes d'un utilisateur demandé sur un utilisateur cible en rajoutant ou supprimant les groupes existant et en sauvegardant les groupes de l'utilisateur avant action.
Principal besoin :
- Je veux que mon compte AD est les mêmes droits que ….
- Si il s'agit d'un rajout de droits, la suppression des droits d'origine sera effectuée
- Si il s'agit d'un remplacement les droits seront sauvegardées avant remplacement.
Entrée : code utilisateur à mettre à jour + code modèle + question sur supp ou non des grps existant
Sortie : Copie des groupes user source sur cible + Sortie des groupes de l'utilisateur cible dans un fichier texte
Pré-requis :
#Rajout extension Quest au script Add-PSSnapin Quest.ActiveRoles.ADManagement #Appel objet vbscript pour utilisateur de inputbox $a = new-object -comobject MSScriptControl.ScriptControl $a.language = "vbscript" $a.addcode("function getInput() getInput = inputbox(`"Indiquer le nom code user à mettre à jour:`",`"Mise à jour Code User via profile ou compte`") end function" ) $NomDest = $a.eval("getInput") #Si pas saisie de valeur sort du script if (!$NomDest.length) {exit} #Recupere la liste des groupes AD de la personne et sauvegarde CSV $user = Get-QADUser $NomDest $user.memberOf | Get-QADGroup | Select-Object NTAccountName,Description,Type,DN,CanonicalName | Export-Csv -delimiter "`t" $NomDest".txt" $a.addcode("function getInput() getInput = inputbox(`"Indiquer le code utilisateur modèle`",`"Mise à jour Code User via profile ou compte`") end function" ) $NomModele = $a.eval("getInput") #Si pas saisie de valeur sort du script if (!$NomModele.length) {exit} $userm = Get-QADUser $NomModele $YES=6; $NO=7 $shell=new-object -com wscript.shell $ret=$shell.popup("Voulez vous supprimer les groupes d'origine ?", 0,"Traitement", 4+32) $ret -eq $YES if ($ret -eq $YES) { # Suppression des groupes present dans le code user cible foreach ($group in $user.memberof) { Remove-QADGroupmember -identity $group -member $user } } else { # Aucun action de suppression } #Ajoute les groupes du profile modele sur le profile cible $userm.memberOf | Get-QADGroup | ForEach-Object {Add-QADGroupMember $_.NTAccountName $user -Verbose}