Question
A supprimer
- ShizuCorp
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 49
- Remerciements reçus 0
il y a 8 ans 2 mois #24754
par ShizuCorp
Réponse de ShizuCorp sur le sujet Re:CSV/Powershell
Waaw, merci de ta réponse Laurent!! Je vais revoir mon script que je venais de modifié du coup 
J'avais fait celui-ci en me basant sur celui de @6ratgus et je revenais vers vous pour savoir si c'est gênant d'avoir plusieurs \"Switch\" ou ce n'est pas grave ?
Voici mon script :
[code:1]
#Parametre fichier CSV
param (
[Parameter(Position=0, Mandatory=$True)]
[string] $Path
)
#Importation du module Active Directory
Import-module ActiveDirectory
# Convertir le mot de passe en chaine securisée
$securePassword = ConvertTo-SecureString \"Stagiairetest\" -AsPlainText -Force
#Boucle du recueil des informations
foreach($user in $users) {
$fname = $user.\"firstName\"
$lname = $user.\"lastName\"
$dept = $user.\"department\"
$Uoffice = $user.\"office\"
$jtitle = $user.\"jobtitle\"
$Upassword = $user.\"password\"
$OUpath = $user.\"Organizational Unit\"
$login = $user.\"firstName\" + \".\" + $user.\"lastName\"
switch($user.office){
\"Paris\" {$office = \"OU=Paris,OU=Employés,DC=entreprise,DC=fr\"}
\"Lyon\" {$office = \"OU=Lyon,OU=Employés,DC=entreprise,DC=fr\"}
\"Rennes\" {$office = \"OU=Rennes,OU=Employés,DC=entreprise,DC=fr\"}
\"Domicile\" {$office = \"OU=Domicile,OU=Employés,DC=entreprise,DC=fr\"}
}
try {
New-ADUser -UserPrincipalName \"$fname.$lname\" -SamAccountName $login -Name \"$fname $lname\" -GivenName $fname -Surname $lname -AccountPassword (ConvertTo-SecureString $Upassword -AsPlainText -Force) -ChangePasswordAtLogon $True -City $Uoffice -Path $OUpath -Department $dept -Enabled $true
Set-ADUser -Identity $login -Enabled $true
#Informations complémentaires
Set-ADUser $fname $lname -add @{title= $jtitle;mail=$fname.$lname@entreprise.fr}
echo \"Utilisateur ajouté! : $fname $lname\"
} catch{
echo \"Utilisateur non ajouté : $fname $lname\"
}
}
#Ajout des utilisateurs de Paris dans leurs groupes
Switch ($dept) {
{$Uoffice -eq \"Paris\" -and $dept -eq \"NEWMAINT\"} {
$groupedest = \"Gi-gmaoPARIS\"
}
{$Uoffice -eq \"Paris\" -and $dept -eq \"NEWMAINT Admin\"} {
$groupedest = \"Gi-gmaoutilsPARIS\"
}
{$Uoffice -eq \"Paris\" -and $dept -eq \"NEWMAINT module intervention\"} {
$groupedest = \"Gi-gmaoDiPARIS\"
}
Add-ADGroupMember -Identity $groupedest -Members $login
#Ajout des utilisateurs de Lyon dans leurs groupes
Switch ($dept) {
{$Uoffice -eq \"Lyon\" -and $dept -eq \"NEWMAINT\"} {
$groupedest = \"Gi-gmaoLYON\"
}
{$Uoffice -eq \"Lyon\" -and $dept -eq \"NEWMAINT Admin\"} {
$groupedest = \"Gi-gmaoutilsLYON\"
}
{$Uoffice -eq \"Lyon\" -and $dept -eq \"NEWMAINT module intervention\"} {
$groupedest = \"Gi-gmaoDiLYON\"
}
Add-ADGroupMember -Identity $groupedest -Members $login
#Ajout des utilisateurs de Rennes dans leurs groupes
Switch ($dept) {
{$Uoffice -eq \"Rennes\" -and $dept -eq \"NEWMAINT\"} {
$groupedest = \"Gi-gmaoRENNES\"
}
{$Uoffice -eq \"Rennes\" -and $dept -eq \"NEWMAINT Admin\"} {
$groupedest = \"Gi-gmaoutilsRENNES\"
}
{$Uoffice -eq \"Rennes\" -and $dept -eq \"NEWMAINT module intervention\"} {
$groupedest = \"Gi-gmaoDiRENNES\"
}
Add-ADGroupMember -Identity $groupedest -Members $login
[/code:1]
J'avais fait celui-ci en me basant sur celui de @6ratgus et je revenais vers vous pour savoir si c'est gênant d'avoir plusieurs \"Switch\" ou ce n'est pas grave ?
Voici mon script :
[code:1]
#Parametre fichier CSV
param (
[Parameter(Position=0, Mandatory=$True)]
[string] $Path
)
#Importation du module Active Directory
Import-module ActiveDirectory
# Convertir le mot de passe en chaine securisée
$securePassword = ConvertTo-SecureString \"Stagiairetest\" -AsPlainText -Force
#Boucle du recueil des informations
foreach($user in $users) {
$fname = $user.\"firstName\"
$lname = $user.\"lastName\"
$dept = $user.\"department\"
$Uoffice = $user.\"office\"
$jtitle = $user.\"jobtitle\"
$Upassword = $user.\"password\"
$OUpath = $user.\"Organizational Unit\"
$login = $user.\"firstName\" + \".\" + $user.\"lastName\"
switch($user.office){
\"Paris\" {$office = \"OU=Paris,OU=Employés,DC=entreprise,DC=fr\"}
\"Lyon\" {$office = \"OU=Lyon,OU=Employés,DC=entreprise,DC=fr\"}
\"Rennes\" {$office = \"OU=Rennes,OU=Employés,DC=entreprise,DC=fr\"}
\"Domicile\" {$office = \"OU=Domicile,OU=Employés,DC=entreprise,DC=fr\"}
}
try {
New-ADUser -UserPrincipalName \"$fname.$lname\" -SamAccountName $login -Name \"$fname $lname\" -GivenName $fname -Surname $lname -AccountPassword (ConvertTo-SecureString $Upassword -AsPlainText -Force) -ChangePasswordAtLogon $True -City $Uoffice -Path $OUpath -Department $dept -Enabled $true
Set-ADUser -Identity $login -Enabled $true
#Informations complémentaires
Set-ADUser $fname $lname -add @{title= $jtitle;mail=$fname.$lname@entreprise.fr}
echo \"Utilisateur ajouté! : $fname $lname\"
} catch{
echo \"Utilisateur non ajouté : $fname $lname\"
}
}
#Ajout des utilisateurs de Paris dans leurs groupes
Switch ($dept) {
{$Uoffice -eq \"Paris\" -and $dept -eq \"NEWMAINT\"} {
$groupedest = \"Gi-gmaoPARIS\"
}
{$Uoffice -eq \"Paris\" -and $dept -eq \"NEWMAINT Admin\"} {
$groupedest = \"Gi-gmaoutilsPARIS\"
}
{$Uoffice -eq \"Paris\" -and $dept -eq \"NEWMAINT module intervention\"} {
$groupedest = \"Gi-gmaoDiPARIS\"
}
Add-ADGroupMember -Identity $groupedest -Members $login
#Ajout des utilisateurs de Lyon dans leurs groupes
Switch ($dept) {
{$Uoffice -eq \"Lyon\" -and $dept -eq \"NEWMAINT\"} {
$groupedest = \"Gi-gmaoLYON\"
}
{$Uoffice -eq \"Lyon\" -and $dept -eq \"NEWMAINT Admin\"} {
$groupedest = \"Gi-gmaoutilsLYON\"
}
{$Uoffice -eq \"Lyon\" -and $dept -eq \"NEWMAINT module intervention\"} {
$groupedest = \"Gi-gmaoDiLYON\"
}
Add-ADGroupMember -Identity $groupedest -Members $login
#Ajout des utilisateurs de Rennes dans leurs groupes
Switch ($dept) {
{$Uoffice -eq \"Rennes\" -and $dept -eq \"NEWMAINT\"} {
$groupedest = \"Gi-gmaoRENNES\"
}
{$Uoffice -eq \"Rennes\" -and $dept -eq \"NEWMAINT Admin\"} {
$groupedest = \"Gi-gmaoutilsRENNES\"
}
{$Uoffice -eq \"Rennes\" -and $dept -eq \"NEWMAINT module intervention\"} {
$groupedest = \"Gi-gmaoDiRENNES\"
}
Add-ADGroupMember -Identity $groupedest -Members $login
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 2 mois #24755
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:CSV/Powershell
ShizuCorporation écrit:
Ensuite, pour la maintenance tu peux simplifier le code autour des switch.
Si on peut imbriquer des hashtables on peut aussi imbriquer des switchs. Voir utiliser des fonctions qui, entre autres, évite la duplication de code.
Ce qui est gênant c'est qu'un script ne fasse pas ce qu'il est sensé faire...je revenais vers vous pour savoir si c'est gênant d'avoir plusieurs \"Switch\" ou ce n'est pas grave ?
Ensuite, pour la maintenance tu peux simplifier le code autour des switch.
Si on peut imbriquer des hashtables on peut aussi imbriquer des switchs. Voir utiliser des fonctions qui, entre autres, évite la duplication de code.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- ShizuCorp
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 49
- Remerciements reçus 0
il y a 8 ans 2 mois #24756
par ShizuCorp
Réponse de ShizuCorp sur le sujet Re:CSV/Powershell
D'accord, merci!
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 2 mois #24759
par Philippe
Réponse de Philippe sur le sujet Re:CSV/Powershell
trois remarque pour ton script :
1) tu fais trois \"Add-ADGroupMember -Identity $groupedest -Members $login\"
un seul suffit a la fin
2) met tes switch dans la boucle foreach
3) dans le switch essai d'utilisé \"$_\" a la place \"$dept\"
4) (zut j'avais dis trois !
) je t'ai corriger la ligne
[code:1]Set-ADUser $fname $lname -add @{title = $jtitle; mail = \"$$(fname.$lname)@entreprise.fr\"}[/code:1]
ton code refait avec un double switch imbriqué :
[code:1]
#Parametre fichier CSV
param (
[Parameter(Position=0, Mandatory=$True)]
[string] $Path
)
#Importation du module Active Directory
Import-module ActiveDirectory
# Convertir le mot de passe en chaine securisée
$securePassword = ConvertTo-SecureString \"Stagiairetest\" -AsPlainText -Force
#Boucle du recueil des informations
foreach ($user in $users) {
$fname = $user.\"firstName\"
$lname = $user.\"lastName\"
$dept = $user.\"department\"
$Uoffice = $user.\"office\"
$jtitle = $user.\"jobtitle\"
$Upassword = $user.\"password\"
$OUpath = $user.\"Organizational Unit\"
$login = $user.\"firstName\" + \".\" + $user.\"lastName\"
switch ($user.office) {
\"Paris\" {$office = \"OU=Paris,OU=Employés,DC=entreprise,DC=fr\"}
\"Lyon\" {$office = \"OU=Lyon,OU=Employés,DC=entreprise,DC=fr\"}
\"Rennes\" {$office = \"OU=Rennes,OU=Employés,DC=entreprise,DC=fr\"}
\"Domicile\" {$office = \"OU=Domicile,OU=Employés,DC=entreprise,DC=fr\"}
}
try {
New-ADUser -UserPrincipalName \"$fname.$lname\" -SamAccountName $login -Name \"$fname $lname\" -GivenName $fname -Surname $lname -AccountPassword (ConvertTo-SecureString $Upassword -AsPlainText -Force) -ChangePasswordAtLogon $True -City $Uoffice -Path $OUpath -Department $dept -Enabled $true
Set-ADUser -Identity $login -Enabled $true
#Informations complémentaires
Set-ADUser $fname $lname -add @{title = $jtitle; mail = \"$$(fname.$lname)@entreprise.fr\"}
Write-Host \"Utilisateur ajouté! : $fname $lname\"
}
catch {
Write-Host \"ERREUR : Utilisateur non ajouté : $fname $lname\" -ForegroundColor Red
}
#Ajout des utilisateurs de Paris dans leurs groupes
Switch ($Uoffice) {
\"Paris\" {
Switch ($dept) {
\"NEWMAINT\" {
$groupedest = \"Gi-gmaoPARIS\"
}
\"NEWMAINT Admin\" {
$groupedest = \"Gi-gmaoutilsPARIS\"
}
\"NEWMAINT module intervention\" {
$groupedest = \"Gi-gmaoDiPARIS\"
}
}
}
\"Lyon\" {
Switch ($dept) {
\"NEWMAINT\" {
$groupedest = \"Gi-gmaoPARIS\"
}
\"NEWMAINT Admin\" {
$groupedest = \"Gi-gmaoutilsPARIS\"
}
\"NEWMAINT module intervention\" {
$groupedest = \"Gi-gmaoDiPARIS\"
}
}
}
\"Rennes\" {
Switch ($dept) {
\"NEWMAINT\" {
$groupedest = \"Gi-gmaoPARIS\"
}
\"NEWMAINT Admin\" {
$groupedest = \"Gi-gmaoutilsPARIS\"
}
\"NEWMAINT module intervention\" {
$groupedest = \"Gi-gmaoDiPARIS\"
}
}
}
}
try {
Add-ADGroupMember -Identity $groupedest -Members $login
Write-host \"Utilisateur ajouté dans le groupe ! : $groupedest\"
}
catch {
Write-Host \"ERREUR : Utilisateur non ajouté dans le groupe : $groupedest\" -ForegroundColor Red
}
}
[/code:1]
Message édité par: 6ratgus, à: 21/12/17 16:13<br><br>Message édité par: 6ratgus, à: 21/12/17 16:14
1) tu fais trois \"Add-ADGroupMember -Identity $groupedest -Members $login\"
un seul suffit a la fin
2) met tes switch dans la boucle foreach
3) dans le switch essai d'utilisé \"$_\" a la place \"$dept\"
4) (zut j'avais dis trois !
[code:1]Set-ADUser $fname $lname -add @{title = $jtitle; mail = \"$$(fname.$lname)@entreprise.fr\"}[/code:1]
ton code refait avec un double switch imbriqué :
[code:1]
#Parametre fichier CSV
param (
[Parameter(Position=0, Mandatory=$True)]
[string] $Path
)
#Importation du module Active Directory
Import-module ActiveDirectory
# Convertir le mot de passe en chaine securisée
$securePassword = ConvertTo-SecureString \"Stagiairetest\" -AsPlainText -Force
#Boucle du recueil des informations
foreach ($user in $users) {
$fname = $user.\"firstName\"
$lname = $user.\"lastName\"
$dept = $user.\"department\"
$Uoffice = $user.\"office\"
$jtitle = $user.\"jobtitle\"
$Upassword = $user.\"password\"
$OUpath = $user.\"Organizational Unit\"
$login = $user.\"firstName\" + \".\" + $user.\"lastName\"
switch ($user.office) {
\"Paris\" {$office = \"OU=Paris,OU=Employés,DC=entreprise,DC=fr\"}
\"Lyon\" {$office = \"OU=Lyon,OU=Employés,DC=entreprise,DC=fr\"}
\"Rennes\" {$office = \"OU=Rennes,OU=Employés,DC=entreprise,DC=fr\"}
\"Domicile\" {$office = \"OU=Domicile,OU=Employés,DC=entreprise,DC=fr\"}
}
try {
New-ADUser -UserPrincipalName \"$fname.$lname\" -SamAccountName $login -Name \"$fname $lname\" -GivenName $fname -Surname $lname -AccountPassword (ConvertTo-SecureString $Upassword -AsPlainText -Force) -ChangePasswordAtLogon $True -City $Uoffice -Path $OUpath -Department $dept -Enabled $true
Set-ADUser -Identity $login -Enabled $true
#Informations complémentaires
Set-ADUser $fname $lname -add @{title = $jtitle; mail = \"$$(fname.$lname)@entreprise.fr\"}
Write-Host \"Utilisateur ajouté! : $fname $lname\"
}
catch {
Write-Host \"ERREUR : Utilisateur non ajouté : $fname $lname\" -ForegroundColor Red
}
#Ajout des utilisateurs de Paris dans leurs groupes
Switch ($Uoffice) {
\"Paris\" {
Switch ($dept) {
\"NEWMAINT\" {
$groupedest = \"Gi-gmaoPARIS\"
}
\"NEWMAINT Admin\" {
$groupedest = \"Gi-gmaoutilsPARIS\"
}
\"NEWMAINT module intervention\" {
$groupedest = \"Gi-gmaoDiPARIS\"
}
}
}
\"Lyon\" {
Switch ($dept) {
\"NEWMAINT\" {
$groupedest = \"Gi-gmaoPARIS\"
}
\"NEWMAINT Admin\" {
$groupedest = \"Gi-gmaoutilsPARIS\"
}
\"NEWMAINT module intervention\" {
$groupedest = \"Gi-gmaoDiPARIS\"
}
}
}
\"Rennes\" {
Switch ($dept) {
\"NEWMAINT\" {
$groupedest = \"Gi-gmaoPARIS\"
}
\"NEWMAINT Admin\" {
$groupedest = \"Gi-gmaoutilsPARIS\"
}
\"NEWMAINT module intervention\" {
$groupedest = \"Gi-gmaoDiPARIS\"
}
}
}
}
try {
Add-ADGroupMember -Identity $groupedest -Members $login
Write-host \"Utilisateur ajouté dans le groupe ! : $groupedest\"
}
catch {
Write-Host \"ERREUR : Utilisateur non ajouté dans le groupe : $groupedest\" -ForegroundColor Red
}
}
[/code:1]
Message édité par: 6ratgus, à: 21/12/17 16:13<br><br>Message édité par: 6ratgus, à: 21/12/17 16:14
Connexion ou Créer un compte pour participer à la conversation.
- ShizuCorp
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 49
- Remerciements reçus 0
il y a 8 ans 2 mois #24760
par ShizuCorp
Réponse de ShizuCorp sur le sujet Re:CSV/Powershell
Woooow, merci 6ratgus!! tu gère tellement !
Merci infiniment!
Merci infiniment!
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 2 mois #24761
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:CSV/Powershell
Un petit pb de copier/coller dans les noms de groupes.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.104 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- A supprimer