Question Script AD, users dans les bons groupes

Plus d'informations
il y a 5 ans 6 mois #27603 par poubelle
Bonjour à tous,

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

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

Plus d'informations
il y a 5 ans 6 mois #27607 par Philippe
salut Alain et bienvenue

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 \&quot;utilisateur non ajouté : $name\&quot;[/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 \&quot;utilisateur non ajouté : $name\&quot; -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.

Plus d'informations
il y a 5 ans 6 mois #27608 par de França
Hello,

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 \&quot;;\&quot; -Path \&quot;E:\ad_CRLF_ew_CRLF_ew\user_import.csv\&quot;



# Déclaration des variables



foreach ($user in $users){



$name = $user.Prénom + \&quot; \&quot; + $user.\&quot;Nom de famille\&quot;

$fname = $user.Prénom

$lname = $user.\&quot;Nom de famille\&quot;

$login = $user.identifiant

$Ulieu = $user.Lieu

$Upassword = \&quot;Azerty25\&quot;

$Email = $user.\&quot;Adresses de messagerie\&quot;

$TelephoneFixe = $user.Téléphone

$TelephoneMobile = $user.\&quot;Téléphone mobile\&quot;

$services = $user.Services

$titre = $user.Titre

$SAM= $login+\&quot;@testad.loc\&quot;

$description = $user.Commentaires

$Usociete = $user.sociétés

$adresse = $user.Adresse

$boitepostale = $user.\&quot;boîte postale\&quot;

$codepostale = $user.\&quot;Code Postale\&quot;


#********Ajout des users de Belfort dans leurs groupes********************#
if ($service -eq \&quot;SiegeBelfort\&quot; -and $service -eq \&quot;Maternelle\&quot;«»){

#Add-ADGroupMember -Identity ' Maternelle ' -Members $login
write-host(\&quot;L'utilisateur $login sera ajouté au groupe Maternelle\&quot;«»)


}

}[/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.

Plus d'informations
il y a 5 ans 6 mois #27611 par poubelle
Bonjour,

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 \&quot;Utilisateur ajouté : $name\&quot;


} catch{
#echo \&quot;utilisateur non ajouté : $name\&quot;

Write-Host \&quot;utilisateur non ajouté : $name\&quot; -ForegroundColor Red
Write-Host $_.ErrorDetails -ForegroundColor Red
}


PS C:\Users\Administrateur&gt; 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&gt;

[/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.

Plus d'informations
il y a 5 ans 6 mois #27612 par poubelle
Bonjour,

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&gt; C:\Users\Administrateur\Documents\Debug_script_users_in_groups.ps1

PS C:\Users\Administrateur&gt;

[/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.

Plus d'informations
il y a 5 ans 6 mois #27613 par de França
Je t'ai joint un code de \&quot;debug\&quot; à la fin de mon poste. Celui-ci te fais un output si ton test est juste mais comme je t'ai dit il ne sera jamais juste, ton test est donc toujours faux.
if ($service -eq \&quot;SiegeBelfort\&quot; -and $service -eq \&quot;Maternelle\&quot;){

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.

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