Question ajouter les membres AD dans des groupes de 500

  • jimmy
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 9 ans 8 mois #22061 par jimmy
Bonjour,

Je souhaiterai ecrire un script me permettant d'allimenter des group AD de 500 membres maxi avec tous les utilisateurs de l'AD
3 group de 500 devraient suffire pour le moment.

voici mon debut de code

[code:1]
import-Module activedirectory
$grp1 = \"Ensemble Agents GRP 1\"
$grp2 = \"Ensemble Agents GRP 2\"
$grp3 = \"Ensemble Agents GRP 3\"


#clean group member
Get-ADGroupMember -Identity $grp1 | %{Remove-ADGroupMember -Identity $grp1 -Members $_ -Confirm:$false}
Get-ADGroupMember -Identity $grp2 | %{Remove-ADGroupMember -Identity $grp2 -Members $_ -Confirm:$false}
Get-ADGroupMember -Identity $grp3 | %{Remove-ADGroupMember -Identity $grp3 -Members $_ -Confirm:$false}


# filtre utilisé ici ne prend en compte que les utilisateurs actifs dont le champ COMPANY = COMPANY
#Get-ADUser -SearchBase 'OU=05 - test,DC=xxx,DC=yy' -Filter { (Enabled -eq \"true\"«») -and (company -eq \"COMPANY\"«») }| % { Add-ADGroupMember $grp1 -Members $_ }


$usersCOMPANY = Get-ADUser -SearchBase 'OU=05 - test,DC=xxx,DC=yy' -Filter { (Enabled -eq \"true\"«») -and (company -eq \"COMPANY\"«») }

# il faudrait ici faire une boucle de ce type qui alimente les users de 1 à 500 dans GRP1
# il faudrait ici faire une boucle de ce type qui alimente les users de 501 à 1000 dans GRP2
# il faudrait ici faire une boucle de ce type qui alimente les users de 1001 à 1500 dans GRP3

foreach ($user in $usersCOMPANY)
{
Add-ADGroupMember $grp1 -Members $_

}




[/code:1]

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

Plus d'informations
il y a 9 ans 8 mois #22062 par Laurent Dardenne
Salut,
une possibilité simple :
[code:1]
$usersCOMPANY = 1..1500|% { \"User$_\"}

$usersCOMPANY[1..500]
$usersCOMPANY[501..1000]
$usersCOMPANY[1001..1500]
[/code:1]
Une autre paramétrable :
[code:1]
#indice zéro
$Bornes=@(
@(0,499,'Grp1'),
@(500,999,'Grp2'),
@(1000,1499,'Grp3')
)
$Bornes|% {
$Min=$_[0]
$Max=$_[1]
$GroupName=$_[2]
Write-Debug \"De $Min à $Max\"
Write-host \"Ajoute $($usersCOMPANY[$Min]) dans $GroupName\"
Write-host \"Ajoute $($usersCOMPANY[$Max]) dans $GroupName\"

#Itération par lot de 500
#$usersCOMPANY[$Min..$Max]|% {Write-host \"Ajoute $_ dans $GroupName\"}
}
[/code:1]
Pour une meilleure relecture, il reste possible d'utiliser un tableau d'objets personnalisé au lieu d'un tableau d'objets.

Tutoriels PowerShell

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

  • jimmy
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 9 ans 8 mois #22063 par jimmy
Réponse de jimmy sur le sujet Re:ajouter les membres AD dans des groupes de 500
merci de ta contribution.

Du coup on cree 3 un tableaux en y plaçant les valeur dedans ?

Avec ça comment je viens boucler ma commande du coup ?

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

Plus d'informations
il y a 9 ans 8 mois #22064 par Laurent Dardenne
jimmy écrit:

Du coup on cree un tableaux en y plaçant les valeur dedans ?

Oui c'est un tableau de paramètres, que tu peux agrandir/réduire.
jimmy écrit:

Avec ça comment je viens boucler ma commande du coup ?

Regarde le paramétrage du cmdlet Add-ADGroupMember et adapte/fusionne le code proposé avec le tien :
[code:1]
foreach ($user in $usersCOMPANY[1..500])
{ Add-ADGroupMember $grp1 -Members $user }
[/code:1]

Tutoriels PowerShell

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

  • jimmy
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 9 ans 8 mois #22065 par jimmy
Réponse de jimmy sur le sujet Re:ajouter les membres AD dans des groupes de 500
c'est parfait merci beaucoup.
Il a juste fallu que je commence le compteur à 0
Et je dois aussi gerer les erreur si il ya des valeurs NULL dans le tableau dans le cas ou on a atteint la fin des users

ça me donne ça au final:

[code:1]
import-Module activedirectory
$grp1ville = \"Ensemble Agents Ville 1\"
$grp2ville = \"Ensemble Agents Ville 2\"
$grp3ville = \"Ensemble Agents Ville 3\"
$grp1Casq = \"Ensemble Agents CASQ 1\"
$grp2Casq = \"Ensemble Agents CASQ 2\"
$grp3Casq = \"Ensemble Agents CASQ 3\"

#clean group member
Get-ADGroupMember -Identity $grp1ville | %{Remove-ADGroupMember -Identity $grp1ville -Members $_ -Confirm:$false}
Get-ADGroupMember -Identity $grp2ville | %{Remove-ADGroupMember -Identity $grp2ville -Members $_ -Confirm:$false}
Get-ADGroupMember -Identity $grp3ville | %{Remove-ADGroupMember -Identity $grp3ville -Members $_ -Confirm:$false}

Get-ADGroupMember -Identity $grp1Casq | %{Remove-ADGroupMember -Identity $grp1Casq -Members $_ -Confirm:$false}
Get-ADGroupMember -Identity $grp2Casq | %{Remove-ADGroupMember -Identity $grp2Casq -Members $_ -Confirm:$false}
Get-ADGroupMember -Identity $grp3Casq | %{Remove-ADGroupMember -Identity $grp3Casq -Members $_ -Confirm:$false}



# filtre utilisé ici ne prend en compte que les utilisateurs actifs dont le champ COMPANY = VILLE ou CASQ
$usersVille = Get-ADUser -SearchBase 'OU=05 - test,DC=XXX,DC=YY' -Filter { (Enabled -eq \"true\"«») -and (company -like \"*ville*\"«») }
$usersCasq = Get-ADUser -SearchBase 'OU=05 - test,DC=XXX,DC=YY' -Filter { (Enabled -eq \"true\"«») -and (company -like \"*casq*\"«») }

foreach ($user in $usersVille[0..499]) { Add-ADGroupMember $grp1Ville -Members $user }
foreach ($user in $usersVille[500..999]) { Add-ADGroupMember $grp2Ville -Members $user }
foreach ($user in $usersVille[1000..1499]) { Add-ADGroupMember $grp3Ville -Members $user }

foreach ($user in $usersCasq[0..499]) { Add-ADGroupMember $grp1Casq -Members $user }
foreach ($user in $usersCasq[500..999]) { Add-ADGroupMember $grp2Casq -Members $user }
foreach ($user in $usersCasq[1000..1499]) { Add-ADGroupMember $grp3Casq -Members $user }

[/code:1]

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

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