Powershell : Liste/Sauve/Copy groupe active directory

By | 12 July 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}

Leave a Reply

Your email address will not be published. Required fields are marked *