Question
Script AD, users dans les bons groupes
- poubelle
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
Je suis débutant dans PowerShell. C’est mon premier script que je me suis inspiré du site de www.supinfo.com/articles/single/4015-scr...tes-creation-groupes.
Je vous joins mon organigramme de l’AD.
https://drive.google.com/open?id=1szK-h53RK4PLckxm79sMdFSJgJ8PWsIt
Fichier joint
[file]
Voici mon code :
[code:1]
Import-Module ActiveDirectory
Import-Module 'Microsoft.PowerShell.Security'
$users = Import-Csv -Delimiter \";\" -Path \"E:\ad\new\new\user_import.csv\"
# Déclaration des variables
foreach ($user in $users){
$name = $user.Prénom + \" \" + $user.\"Nom de famille\"
$fname = $user.Prénom
$lname = $user.\"Nom de famille\"
$login = $user.identifiant
$Ulieu = $user.Lieu
$Upassword = \"Azerty25\"
$Email = $user.\"Adresses de messagerie\"
$TelephoneFixe = $user.Téléphone
$TelephoneMobile = $user.\"Téléphone mobile\"
$services = $user.Services
$titre = $user.Titre
$SAM= $login+\"@testad.loc\"
$description = $user.Commentaires
$Usociete = $user.sociétés
$adresse = $user.Adresse
$boitepostale = $user.\"boîte postale\"
$codepostale = $user.\"Code Postale\"
#*******Ajout de chaque utilisateur dans son OU spécifique*******
switch($user.societe){
\" Belfort \" {$societe = \"OU=Belfort,OU=Personnels,dc=testad=loc \"}
\" ScolaireBelfort \" {$service = \"ou=ScolaireBelfort,OU=Belfort,OU=Personnels, dc=testad,dc=loc \"}
\"AdministrationGenerale\" {$ societe = \"ou=AdministrationGenerale,ou=SiegeBesançon,OU=Besançon,OU=Personnels,dc=testad,dc=loc \"}
\"AffairesJuridiques\" {$ societe = \"ou=AffairesJuridiques,ou=SiegeBesançon,OU=Besançon,OU=Personnels,dc=testad,dc=loc \"}
\"AgenceComptable\" {$ societe = \"ou=AgenceComptable,ou=SiegeBesançon,OU=Besançon,OU=Personnels,dc=testad,dc=loc \"}
\"Communication\" {$ societe = \"ou=Communication,ou=SiegeBesançon,OU=Besançon,OU=Personnels,dc=testad =loc \"}
\"Formation\" {$ societe = \"ou=Formation,ou=SiegeBesançon,OU=Besançon,OU=Personnels,dc=testad,dc=loc \"}
\"Informatique\" {$ societe = \"ou=Informatique,ou= SiegeBesançon,OU=Besançon,OU=Personnels,dc=testad,dc=loc\"}
\" Ecole \" {$ societe = \" ou= Ecole,OU=Besançon,OU=Personnels,dc=testad,dc=loc \"}
\" Dijon \" {$societe = \"OU=Dijon,OU=Personnels,dc=testad=loc \"}
\" ScolaireDijon \" {$service = \"ou=ScolaireDijon,OU= Dijon,OU=Personnels, dc=testad,dc=loc \"}
default {$societe = $null}
}
#*******Utilisation des variables pour ajouter les utilisateurs dans l’AD.***********
try {
New-ADUser -Name $name -DisplayName $name -GivenName $fname -Surname $lname -city $Ulieu -Path $societe -Title $titre -Department $services -Office $Services -StreetAddress $adresse -POBox $boitepostale -PostalCode $codepostale -Company $Usociete -OfficePhone $TelephoneFixe -HomePhone $TelephoneFixe -MobilePhone $TelephoneMobile -EmailAddress $Email -Description $description -SamAccountName $login -UserPrincipalName $SAM -AccountPassword (ConvertTo-SecureString $Upassword -AsPlainText -Force) -Enabled $true
echo \"Utilisateur ajouté : $name\"
} catch{
echo \"utilisateur non ajouté : $name\"
}
#********Ajout des users de Belfort dans leurs groupes********************#
if ($service -eq \"SiegeBelfort\" -and $service -eq \"Maternelle\"«»){
Add-ADGroupMember -Identity ' Maternelle ' -Members $login
}
elseif ($Usociete -eq \" SiegeBelfort \" -and $service -eq \"creche\"«»){
Add-ADGroupMember -Identity ' creche ' -Members $login
}
#********Ajout des users de Ecole Besançon dans leurs groupes********************#
if ($Usociete -eq \" Ecole \" -and $service -eq \"Enfance\"«»){
Add-ADGroupMember -Identity ' Enfance ‘-Members $login
}
#********Ajout des users de USiegeBesançon dans leurs groupes********************#
if ($Usociete -eq \" Rectorat \" -and $service -eq \"AdministrationGenerale\"«»){
Add-ADGroupMember -Identity 'AdministrationGenerale' -Members $login
}
elseif ($Usociete -eq \" Rectorat \" -and $service -eq \"AffairesJuridiques\"«»){
Add-ADGroupMember -Identity 'AffairesJuridiques' -Members $login
}
elseif ($Usociete -eq \" Rectorat \" -and $service -eq \"Communication\"«»){
Add-ADGroupMember -Identity 'Communication' -Members $login
elseif ($Usociete -eq \" Rectorat \" -and $service -eq \"DSI\"«»){
Add-ADGroupMember -Identity 'DSI' -Members $login
}
elseif ($Usociete -eq \" Rectorat \" -and $service -eq \"Informatique\"«»){
Add-ADGroupMember -Identity ' Informatique ' -Members $login
}
elseif ($Usociete -eq \" Rectorat \" -and $service -eq \" Formation \"«»){
Add-ADGroupMember -Identity 'Formation' -Members $login
}
elseif ($Usociete -eq \" Rectorat \" -and $service -eq \"RH\"«»){
Add-ADGroupMember -Identity 'RH' -Members $login
}
#********Ajout des users de DIJON dans leurs groupes********************#
if ($Usociete -eq \"SiegeDijon\" -and $service -eq \"Lycée\"«»){
Add-ADGroupMember -Identity ‘Lycée’ -Members $login
}
}
[/code:1]
Tous les groupes ont été déjà créer manuellement.
Je ne comprend pas je n'arrive pas à mettre les utilisateurs dans leurs groupes.
Avez-vous une idée ?
Merci
Alain<br><br>Message édité par: alain25, à: 23/09/18 15:05
_______________________
Technicien informatique
Débutant dans les scripts PowerShell.
Windows Serveur 2016
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
si ça ne fonctionne pas c'est que tu doit avoir un message d'erreur mais il est masquer par le try/catsh de cette ligne
[code:1]catch{
echo \"utilisateur non ajouté : $name\"[/code:1]
remplace le echo par un write-host et affiche le message en couleur visible sinon tu risque de passé à coté
tu peut aussi afficher erreur ce sera plus simple pour le débogage :
[code:1] Write-Host \"utilisateur non ajouté : $name\" -ForegroundColor Red
Write-Host $_.ErrorDetails -ForegroundColor Red
[/code:1]
tu une erreur sur cette ligne, l'apostrophe après enfance n'est pas le bon
[code:1]Add-ADGroupMember -Identity ' Enfance ‘-Members $login[/code:1]
je te conseil aussi d'enlever les espaces avant et après chaque nom de groupe dans les if et les Add-ADGroupMember
déjà dis nous ce que ça donne !!

Connexion ou Créer un compte pour participer à la conversation.
- de França
- Hors Ligne
- Membre senior
-
- Messages : 67
- Remerciements reçus 0
J'ai pas tout lus mais j'ai l'impression qu'il y a confusion dans tes variables, entre des $service et des $societe et des $uservice, $usociete ça ne me parait pas claire. Dans ton switch une fois c'est $societe et une fois c'est $service, ton -Path du new-aduser correspond à $service, ton switch devrait donc toujours utiliser cette variable.
Sinon si tes utilisateurs sont bien créés dans les OU mais pas ajoutés aux groupes c'est simplement que tes tests ne sont jamais juste. Si ta phase de création des utilisateurs est déjà ok je te propose de disocier l'ajout au groupe et de faire du debugging.
Ex.:
[code:1]Import-Module ActiveDirectory
Import-Module 'Microsoft.PowerShell.Security'
$users = Import-Csv -Delimiter \";\" -Path \"E:\ad_CRLF_ew_CRLF_ew\user_import.csv\"
# Déclaration des variables
foreach ($user in $users){
$name = $user.Prénom + \" \" + $user.\"Nom de famille\"
$fname = $user.Prénom
$lname = $user.\"Nom de famille\"
$login = $user.identifiant
$Ulieu = $user.Lieu
$Upassword = \"Azerty25\"
$Email = $user.\"Adresses de messagerie\"
$TelephoneFixe = $user.Téléphone
$TelephoneMobile = $user.\"Téléphone mobile\"
$services = $user.Services
$titre = $user.Titre
$SAM= $login+\"@testad.loc\"
$description = $user.Commentaires
$Usociete = $user.sociétés
$adresse = $user.Adresse
$boitepostale = $user.\"boîte postale\"
$codepostale = $user.\"Code Postale\"
#********Ajout des users de Belfort dans leurs groupes********************#
if ($service -eq \"SiegeBelfort\" -and $service -eq \"Maternelle\"«»){
#Add-ADGroupMember -Identity ' Maternelle ' -Members $login
write-host(\"L'utilisateur $login sera ajouté au groupe Maternelle\"«»)
}
}[/code:1]
Je peux déjà te dire que tu n'auras jamais d'output car ce test avec un -and ne sera jamais juste, un utilisateur n'a qu'un service à priori.<br><br>Message édité par: unfam0us, à: 24/09/18 15:13
Connexion ou Créer un compte pour participer à la conversation.
- poubelle
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
J'ai enlevé les espaces et corriger les erreurs que tu m'as dit.
Voici ce qu'il me réponds.
[code:1]
try {
New-ADUser -Name $name etc..................
echo \"Utilisateur ajouté : $name\"
} catch{
#echo \"utilisateur non ajouté : $name\"
Write-Host \"utilisateur non ajouté : $name\" -ForegroundColor Red
Write-Host $_.ErrorDetails -ForegroundColor Red
}
PS C:\Users\Administrateur> C:\Users\Administrateur\Documents\script_users_in_groups.ps1
utilisateur non ajouté : Cecile Audrey
utilisateur non ajouté : Alain Oliver
utilisateur non ajouté : Yann Pierre
PS C:\Users\Administrateur>
[/code:1]
Il me met rien d'autre
Voici l'organigramme :
Merci<br><br>Message édité par: alain25, à: 24/09/18 20:43
_______________________
Technicien informatique
Débutant dans les scripts PowerShell.
Windows Serveur 2016
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- poubelle
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
J'ai repris ton script et je n'ai pas de message qui s'affiche. Je débute dans le PowerShell.
[code:1]
PS C:\Users\Administrateur> C:\Users\Administrateur\Documents\Debug_script_users_in_groups.ps1
PS C:\Users\Administrateur>
[/code:1]
$societe est le nom de la societe SiegeBelfort et #service est le groupes qui appartient.
[code:1]
Identifiant;Nom de famille;Prénom;Adresse;Boîte Postale;Code Postale;Lieu;Sociétés;Services;Titre;Adresses de messagerie;Téléphone;Téléphone mobile;Commentaires
cecile.audrey;Cecile;Audrey; 25 rue de l'adresse;;90000;Belfort;SiegeBelfort;Maternelle;;cecile.audrey@testad.loc;03 80 00 00 00;06 90 00 00 00 00;test informations
alain.oliver; Alain;Oliver;52 avenue de l'adresse;;90000;Belfort;SiegeBelfort;Maternelle;;alain.oliver@testad.loc;03 80 00 00 00;06 90 00 00 00 00;test informations
[/code:1]
Par contre entre des $service et des $societe et des $uservice, $usociete, je n'ai pas compris pourquoi il a mis ça sur le site site de www.supinfo.com/articles/single/4015-scr...importation-comptes- creation-groupes .
Dans ton switch une fois c'est $societe et une fois c'est $service, ton -Path du new-aduser correspond à $service, ton switch devrait donc toujours utiliser cette variable.
Oui j'ai vu c'est une erreur du copie coller. En fait je veux identifier la société et chaque societés ont un service.
Sinon si tes utilisateurs sont bien créés dans les OU mais pas ajoutés aux groupes c'est simplement que tes tests ne sont jamais juste.
Les utilisateurs sont bien ajouter dans le OU.
Si ta phase de création des utilisateurs est déjà ok je te propose de disocier l'ajout au groupe et de faire du debugging.
Comment fait on pour le débogage ?
Merci
Alain
_______________________
Technicien informatique
Débutant dans les scripts PowerShell.
Windows Serveur 2016
Connexion ou Créer un compte pour participer à la conversation.
- de França
- Hors Ligne
- Membre senior
-
- Messages : 67
- Remerciements reçus 0
if ($service -eq \"SiegeBelfort\" -and $service -eq \"Maternelle\"){
Il est important que tu saches ce que tu veux faire, je ne peux pas corriger ton code à ta place. Formule déjà textuellement les conditions d'ajout de tel ou tel utilisateur dans tel ou tel groupe, on pourra ensuite te donner une indication de ce qui est juste ou faux.
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Script AD, users dans les bons groupes