Powershell : Liste/Sauve/Copy groupe active directory

de | 12 juillet 2013

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 :

Powershell + Addons Quest.

#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}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.