Question Modifier l'attribut ProxyAddresses, Mail et Groupes

Plus d'informations
il y a 9 mois 1 semaine #33948 par LACHARI
Hello la Communauté,

Je sollicite votre aide sur un script, je ne sais pas si c'est bon :
1. Je dois supprimer les valeurs de l'attribut ProxyAddresses contenant plusieurs entrées
2. Repeupler ce même attribut avec une nouvelle valeur
3. Modifier l'attribut Mail avec la même valeur que celui du ProxyAddresses
4. Supprimer le groupe AD de l'utilisateur contenant les mots GAPPS-INT par le groupe AD GAPPS-PRD-USR

Voilà ce que j'ai fait :
#Fichier CSV contenant la liste des Utilisateurs (un en-tête contenant samAccountName, ProxyAddresses et Mail)
$csv = "C:\Scripts\ListeUtilisateurs.csv"

$ListeUtilisateurs = Import-Csv -Path $csv -Delimiter ";" -Encoding UTF8
ForEach ($Utilisateur in $ListeUtilisateurs)
{
$User = $_."samAccountName"
$Proxy = $_."ProxyAddresses"
$Email = $_."Mail"

# Sauvegarde des valeurs de ProxyAddresses dans un fichier
Get-ADUser $_.samAccountName -Properties ProxyAddresses | Select-Object Name, @{L = "ProxyAddresses"; E = {$_.ProxyAddresses -join ";"}} | Export-Csv -Path "C:\Scripts\ProxyAddresses.csv" -NoTypeInformation

# Suppression des valeurs de ProxyAddresses
Set-ADUser $_.samAccountName -Remove @{ProxyAddresses=$Proxy}

# Ajout du nouveau ProxyAddresses
$NewProxy = "SMTP:" + "$_.samAccountName" + "@tmp.toto.com"
Set-ADUser $_.SamAccountName -Add @{ProxyAddresses = $NewProxy}

# Remplacer la valeur de l'attribut Mail par ProxyAddresses
Set-ADUser $_.SamAccountName -EmailAddress $NewProxy

#Supprimer le groupe AD contenant les mots GAPPS-INT et ajouter le groupe GAPPS-PRD-USR
$GroupeINT = Get-ADGroup -Filter "Name -like '*GAPPS-INT*'"
$GroupePRD = Get-ADGroup -Identity GAPPS-PRD-USR
Remove-ADGroupMember -Identity $GroupeINT -Members $_.SamAccountName
Add-ADGroupMember -Identity $GroupePRD -Members $_.SamAccountName
}


Merci à vous :-)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 mois 1 semaine - il y a 9 mois 1 semaine #33949 par Arnaud Petitjean
Bonjour David,

Sois le bienvenu dans notre forum et dans la communauté PowerShell Francophone :-) !

Déjà tu ne nous dit pas ce qui ne fonctionne pas . A première vue, je dirais que globalement ton script me semble plutôt bien écrit.

Je note un problème cela dit, qui fait que ça ne peut pas marcher. Dans ta boucle Foreach tu déclares la variable $Utilisateur et dans la suite de ton code tu fais référence à $_ au lieu de $Utilisateur...

Je note un 2e problème selon moi relatif à la suppression et à l'ajout de membre dans les groupes.
Si tu écris ceci :
$GroupeINT = Get-ADGroup -Filter "Name -like '*GAPPS-INT*'"
  
Il faut t'attendre à recevoir un ou plusieurs résultats et donc un tableau dans ta variable $GroupeINT. Il te faudra donc traiter $GroupeINT avec un Foreach afin de traiter chaque groupe; ce que tu ne fais pas.
Mais je pense que ce n'est pas exactement ce que tu souhaites faire.

A mon avis il manque un test pour vérifier si l'utilisateur fait partie d'un groupe contenant les mot GAPPS-INT.
Je pense que tu devrais lister tous les groupes dont l'utilisateur est membre et vérifier si l'un des groupes match le pattern "GAPPS-INT".

Je te donne un exemple :
# Récupération des groupes dont l'utlisateur Arnaud est membre
$groupesGAPPS-INT = (Get-ADUser -Identity arnaud -Properties *).memberof -match 'GAPPS-INT'

# Retrait de l'utilisateur Arnaud des groupes qui contiennent GAPPS-INT
$GroupesGAPPS-INT | foreach { Remove-ADGroupMember -Identity $_ -Member 'Arnaud' }

# Ajout de l'utilisateur Arnaud dans le groupe GAPPS-PRD-USR
if ($groupesGAPPS-INT.count -gt 0) {
   Add-AdGroupMember -Identity GAPPS-PRD-USR -Member Arnaud
}


Je n'ai pas testé l'entièreté de mon code. Il se peut que les retraits/ajouts de membres aux groupes ne fonctionnent pas. Mais l'idée est là je pense.

Dis-moi si ça va ou si je suis complètement à côté de la plaque :-).

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Dernière édition: il y a 9 mois 1 semaine par Arnaud Petitjean.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.103 secondes
Propulsé par Kunena