Question Export-csv vers csv déjà existant

Plus d'informations
il y a 8 ans 6 mois #24292 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

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

Plus d'informations
il y a 8 ans 6 mois #24294 par Philippe
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

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

Plus d'informations
il y a 8 ans 6 mois #24295 par alexis
Bonjour 6ratgus,

Que veux-tu dire par \&quot;approche conventionnel\&quot; ?

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.

Plus d'informations
il y a 8 ans 5 mois #24299 par Philippe

Je vais tester l'option append mais la colonne va-t-elle bien s'ajouter à la suite des autres ?

aucune instruction ne fais ça !!!
dans un fichier csv ou autre, on travail par ligne, pas par colonne

Que veux-tu dire par \&quot;approche conventionnel\&quot; ?

habituellement quand on veux faire un fichier au format CSV, on utilisent des instruction csv plus adapter à ce travail
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=\&quot;UserName\&quot;;e={$user.Prenom.ToLower().substring(0,1) + \&quot;.\&quot; + $user.Nom.ToLower()}},
@{n=\&quot;Initiale\&quot;;e={$user.Prenom.ToUpper().Substring(0,1)+$user.Nom.ToUpper().SubString(0,1)}} |
Export-CSV \&quot;C:\Users\Administrateur\Desktop\exportUsers.csv\&quot; -Delimiter \&quot;;\&quot;
[/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.

Plus d'informations
il y a 8 ans 5 mois #24304 par alexis
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

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

Plus d'informations
il y a 8 ans 5 mois #24307 par Philippe

Puis-je ajouter une colonne dans un fichier 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 !!
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 :whistle:

Si non, il faut que j'écrase mon fichier csv existant et que je remplace le contenu avec ton code ?

oui exact
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 :blush:

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

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