Question
Export-csv vers csv déjà existant
- alexis
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 8 ans 6 mois #24292
par alexis
Export-csv vers csv déjà existant a été créé par alexis
Bonjour,
J'utilise actuellement un script pour créer les utilisateurs dans mon AD via un fichier csv. Voila mon script :
[code:1] ################################################
##CREATION DES UTILISATEURS DEPUIS FICHIER CSV##
################################################
#Activation du module AD
Import-Module ActiveDirectory
Write-Host -foreground Yellow \"===============================\"
Write-Host -foreground Yellow \"Module ActiveDirectory chargé !\"
Write-Host -foreground Yellow \"===============================\"
#Importation du fichier contenant les utilisateurs
$users = Import-CSV \"C:\Users\Administrateur\Desktop\Users.csv\" -Delimiter \";\"
foreach($user in $users) {
#Variables
$Domaine = (Get-ADDomainController).DefaultPartition
$Upn = \"@\"+(Get-ADDomainController).Domain
$PrenomMaj = (Get-Culture).textinfo.ToTitleCase($user.Prenom)
$Username = $user.Prenom.ToLower().substring(0,1) + \".\" + $user.Nom.ToLower()
$Name = $PrenomMaj + \" \" + $user.Nom.ToUpper() + \" \" + $user.Grade
$Ou = $user.OU + \",\" + $domaine
$Service = $user.Service
$Mdp = $user.MDP
$Initiale = $user.Prenom.ToUpper().Substring(0,1)+$user.Nom.ToUpper().SubString(0,1)
New-ADUser -Name $Name -GivenName $PrenomMaj -DisplayName $Name -Surname $user.Nom.ToUpper() -SamAccountName $Username -UserPrincipalName $Username `
-AccountPassword(ConvertTo-SecureString -AsPlainText $Mdp -Force) -ChangePasswordAtLogon $true `
-Office $Service -Department $Service -Initials $Initiale `
-Enabled $true -path $Ou
Write-Host -ForegroundColor Gray \"Création de l'utilisateur $Username terminé !\"
}[/code:1]
Celui-ci fonctionne bien mais les identifiants ne sont pas inclus dans le CSV or je dois les rajouter dedans car j'envoi ensuite (par publipostage Word) les identifiants et mot de passe aux utilisateurs.
Donc j'aimerais savoir comment je peut faire pour exporter le contenu pour chaque utilisateur de la variable $Username dans une nouvelle colonne de mon CSV source.
Voici un code que j'ai essayé, fonctionnel mais je ne trouve pas comment faire pour l'ajout dans le fichier source sans la suppression de celui-ci.
[code:1] ################################################
##CREATION DES UTILISATEURS DEPUIS FICHIER CSV##
################################################
#Activation du module AD
Import-Module ActiveDirectory
Write-Host -foreground Yellow \"===============================\"
Write-Host -foreground Yellow \"Module ActiveDirectory chargé !\"
Write-Host -foreground Yellow \"===============================\"
#Importation du fichier contenant les utilisateurs
$users = Import-CSV \"C:\Users\Administrateur\Desktop\Users.csv\" -Delimiter \";\"
foreach($user in $users) {
#Variables
$Domaine = (Get-ADDomainController).DefaultPartition
$Upn = \"@\"+(Get-ADDomainController).Domain
$PrenomMaj = (Get-Culture).textinfo.ToTitleCase($user.Prenom)
$Username = $user.Prenom.ToLower().substring(0,1) + \".\" + $user.Nom.ToLower()
$Name = $PrenomMaj + \" \" + $user.Nom.ToUpper() + \" \" + $user.Grade
$Ou = $user.OU + \",\" + $domaine
$Service = $user.Service
$Mdp = $user.MDP
$Initiale = $user.Prenom.ToUpper().Substring(0,1)+$user.Nom.ToUpper().SubString(0,1)
New-ADUser -Name $Name -GivenName $PrenomMaj -DisplayName $Name -Surname $user.Nom.ToUpper() -SamAccountName $Username -UserPrincipalName $Username `
-AccountPassword(ConvertTo-SecureString -AsPlainText $Mdp -Force) -ChangePasswordAtLogon $true `
-Office $Service -Department $Service -Initials $Initiale `
-Enabled $true -path $Ou
Write-Host -ForegroundColor Gray \"Création de l'utilisateur $Username terminé !\"
$table=@\"
ID;MDP
$Username;$MDP
\"@
$table | Set-Content \"C:\Users\Administrateur\Desktop\users.csv\"
}[/code:1]
Merci
J'utilise actuellement un script pour créer les utilisateurs dans mon AD via un fichier csv. Voila mon script :
[code:1] ################################################
##CREATION DES UTILISATEURS DEPUIS FICHIER CSV##
################################################
#Activation du module AD
Import-Module ActiveDirectory
Write-Host -foreground Yellow \"===============================\"
Write-Host -foreground Yellow \"Module ActiveDirectory chargé !\"
Write-Host -foreground Yellow \"===============================\"
#Importation du fichier contenant les utilisateurs
$users = Import-CSV \"C:\Users\Administrateur\Desktop\Users.csv\" -Delimiter \";\"
foreach($user in $users) {
#Variables
$Domaine = (Get-ADDomainController).DefaultPartition
$Upn = \"@\"+(Get-ADDomainController).Domain
$PrenomMaj = (Get-Culture).textinfo.ToTitleCase($user.Prenom)
$Username = $user.Prenom.ToLower().substring(0,1) + \".\" + $user.Nom.ToLower()
$Name = $PrenomMaj + \" \" + $user.Nom.ToUpper() + \" \" + $user.Grade
$Ou = $user.OU + \",\" + $domaine
$Service = $user.Service
$Mdp = $user.MDP
$Initiale = $user.Prenom.ToUpper().Substring(0,1)+$user.Nom.ToUpper().SubString(0,1)
New-ADUser -Name $Name -GivenName $PrenomMaj -DisplayName $Name -Surname $user.Nom.ToUpper() -SamAccountName $Username -UserPrincipalName $Username `
-AccountPassword(ConvertTo-SecureString -AsPlainText $Mdp -Force) -ChangePasswordAtLogon $true `
-Office $Service -Department $Service -Initials $Initiale `
-Enabled $true -path $Ou
Write-Host -ForegroundColor Gray \"Création de l'utilisateur $Username terminé !\"
}[/code:1]
Celui-ci fonctionne bien mais les identifiants ne sont pas inclus dans le CSV or je dois les rajouter dedans car j'envoi ensuite (par publipostage Word) les identifiants et mot de passe aux utilisateurs.
Donc j'aimerais savoir comment je peut faire pour exporter le contenu pour chaque utilisateur de la variable $Username dans une nouvelle colonne de mon CSV source.
Voici un code que j'ai essayé, fonctionnel mais je ne trouve pas comment faire pour l'ajout dans le fichier source sans la suppression de celui-ci.
[code:1] ################################################
##CREATION DES UTILISATEURS DEPUIS FICHIER CSV##
################################################
#Activation du module AD
Import-Module ActiveDirectory
Write-Host -foreground Yellow \"===============================\"
Write-Host -foreground Yellow \"Module ActiveDirectory chargé !\"
Write-Host -foreground Yellow \"===============================\"
#Importation du fichier contenant les utilisateurs
$users = Import-CSV \"C:\Users\Administrateur\Desktop\Users.csv\" -Delimiter \";\"
foreach($user in $users) {
#Variables
$Domaine = (Get-ADDomainController).DefaultPartition
$Upn = \"@\"+(Get-ADDomainController).Domain
$PrenomMaj = (Get-Culture).textinfo.ToTitleCase($user.Prenom)
$Username = $user.Prenom.ToLower().substring(0,1) + \".\" + $user.Nom.ToLower()
$Name = $PrenomMaj + \" \" + $user.Nom.ToUpper() + \" \" + $user.Grade
$Ou = $user.OU + \",\" + $domaine
$Service = $user.Service
$Mdp = $user.MDP
$Initiale = $user.Prenom.ToUpper().Substring(0,1)+$user.Nom.ToUpper().SubString(0,1)
New-ADUser -Name $Name -GivenName $PrenomMaj -DisplayName $Name -Surname $user.Nom.ToUpper() -SamAccountName $Username -UserPrincipalName $Username `
-AccountPassword(ConvertTo-SecureString -AsPlainText $Mdp -Force) -ChangePasswordAtLogon $true `
-Office $Service -Department $Service -Initials $Initiale `
-Enabled $true -path $Ou
Write-Host -ForegroundColor Gray \"Création de l'utilisateur $Username terminé !\"
$table=@\"
ID;MDP
$Username;$MDP
\"@
$table | Set-Content \"C:\Users\Administrateur\Desktop\users.csv\"
}[/code:1]
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 6 mois #24294
par Philippe
Réponse de Philippe sur le sujet Re:Export-csv vers csv déjà existant
salut alexis45140 et bienvenue
bien que ton approche est peu conventionnel, ce qui te manque c'est de rajouter l'option append pour le set-content
bien sur le append fonctionne avec PowerShell Version 3 ou +
bonne suite pour ton script<br><br>Message édité par: 6ratgus, à: 22/09/17 15:28
bien que ton approche est peu conventionnel, ce qui te manque c'est de rajouter l'option append pour le set-content
bien sur le append fonctionne avec PowerShell Version 3 ou +
bonne suite pour ton script<br><br>Message édité par: 6ratgus, à: 22/09/17 15:28
Connexion ou Créer un compte pour participer à la conversation.
- alexis
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 8 ans 6 mois #24295
par alexis
Réponse de alexis sur le sujet Re:Export-csv vers csv déjà existant
Bonjour 6ratgus,
Que veux-tu dire par \"approche conventionnel\" ?
Je vais tester l'option append mais la colonne va-t-elle bien s'ajouter à la suite des autres ?
Merci et bonne journée
Alexis
Que veux-tu dire par \"approche conventionnel\" ?
Je vais tester l'option append mais la colonne va-t-elle bien s'ajouter à la suite des autres ?
Merci et bonne journée
Alexis
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 5 mois #24299
par Philippe
dans un fichier csv ou autre, on travail par ligne, pas par colonne
et donc plutôt d'écrire chaque ligne (user) dans le fichier a fur et a mesure que tu le crée l'utilisateur dans l'AD
écris la liste d'un coup après la boucle avec un export comme ceci :
[code:1]$users | select domaine, Prenom, Nom, Grade, OU, service, MDP,
@{n=\"UserName\";e={$user.Prenom.ToLower().substring(0,1) + \".\" + $user.Nom.ToLower()}},
@{n=\"Initiale\";e={$user.Prenom.ToUpper().Substring(0,1)+$user.Nom.ToUpper().SubString(0,1)}} |
Export-CSV \"C:\Users\Administrateur\Desktop\exportUsers.csv\" -Delimiter \";\"
[/code:1]
correction import-csv par export-csv<br><br>Message édité par: 6ratgus, à: 26/09/17 09:53
Réponse de Philippe sur le sujet Re:Export-csv vers csv déjà existant
aucune instruction ne fais ça !!!Je vais tester l'option append mais la colonne va-t-elle bien s'ajouter à la suite des autres ?
dans un fichier csv ou autre, on travail par ligne, pas par colonne
habituellement quand on veux faire un fichier au format CSV, on utilisent des instruction csv plus adapter à ce travailQue veux-tu dire par \"approche conventionnel\" ?
et donc plutôt d'écrire chaque ligne (user) dans le fichier a fur et a mesure que tu le crée l'utilisateur dans l'AD
écris la liste d'un coup après la boucle avec un export comme ceci :
[code:1]$users | select domaine, Prenom, Nom, Grade, OU, service, MDP,
@{n=\"UserName\";e={$user.Prenom.ToLower().substring(0,1) + \".\" + $user.Nom.ToLower()}},
@{n=\"Initiale\";e={$user.Prenom.ToUpper().Substring(0,1)+$user.Nom.ToUpper().SubString(0,1)}} |
Export-CSV \"C:\Users\Administrateur\Desktop\exportUsers.csv\" -Delimiter \";\"
[/code:1]
correction import-csv par export-csv<br><br>Message édité par: 6ratgus, à: 26/09/17 09:53
Connexion ou Créer un compte pour participer à la conversation.
- alexis
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 8 ans 5 mois #24304
par alexis
Réponse de alexis sur le sujet Re:Export-csv vers csv déjà existant
Bonjour 6ratgus,
Merci de ta réponse mais du coup je ne comprend pas :
Puis-je ajouter une colonne dans un fichier csv déjà existant ?
Si non, il faut que j'écrase mon fichier csv existant et que je remplace le contenu avec ton code ?
Merci.
Bonne journée
Alexis
Merci de ta réponse mais du coup je ne comprend pas :
Puis-je ajouter une colonne dans un fichier csv déjà existant ?
Si non, il faut que j'écrase mon fichier csv existant et que je remplace le contenu avec ton code ?
Merci.
Bonne journée
Alexis
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 5 mois #24307
par Philippe
mais peut être a tu déjà utilisé les dernières version de langage de programmation qui permette cela ?!
mais je me tiens pas au courant des évolutions des langages de programmations
mais d'abord tu compare les données et vérifie si les colonnes rajouter contiens les bonnes infos !
et tu profite de ton test pour corriger ma ligne de code en remplacent Import-CSV par Export-CSV
désoler de l'erreur de frappe
Réponse de Philippe sur le sujet Re:Export-csv vers csv déjà existant
alors je répète aucune instruction ne fais ça dans PowerShell !!! et je connais aucun langage qui puisse rajouter une ou des colonnes a un fichier CSV sans le réécrire entièrement !!Puis-je ajouter une colonne dans un fichier csv déjà existant ?
mais peut être a tu déjà utilisé les dernières version de langage de programmation qui permette cela ?!
mais je me tiens pas au courant des évolutions des langages de programmations
oui exactSi non, il faut que j'écrase mon fichier csv existant et que je remplace le contenu avec ton code ?
mais d'abord tu compare les données et vérifie si les colonnes rajouter contiens les bonnes infos !
et tu profite de ton test pour corriger ma ligne de code en remplacent Import-CSV par Export-CSV
désoler de l'erreur de frappe
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.044 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Export-csv vers csv déjà existant