Question
Export en fichier csv après traitement
- dumont
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 2 ans 4 mois #31564
par dumont
Export en fichier csv après traitement a été créé par dumont
Bonjour,
Je m'en remets à vous car je tourne en rond depuis ce matin. On m'a mis sur le traitement d'un fichier xml pour lequel je dois récupérer des données.
Je parviens à tout avoir dans un fichier CSV mais je ne suis pas parvenu à garder seulement ce qui m'interessait (à savoir seulement les lignes utilisateurs qui ont @mondomaine.com)
J'ai donc décidé de faire un second traitement sur le premier fichier CSV, avec ma condition je récupère exactement ce que je veux avec l'affichage de $line
Je voudrais maintenant exporter ce nouveau traitement dans un fichier CSV, j'ai essayé avec cette ligne dans le if à la place de juste $line, mais ça ne donne rien
Est-ce que quelqu'un pourrait m'aiguiller là dessus, ça serait très gentil !
Merci !
Je m'en remets à vous car je tourne en rond depuis ce matin. On m'a mis sur le traitement d'un fichier xml pour lequel je dois récupérer des données.
Je parviens à tout avoir dans un fichier CSV mais je ne suis pas parvenu à garder seulement ce qui m'interessait (à savoir seulement les lignes utilisateurs qui ont @mondomaine.com)
J'ai donc décidé de faire un second traitement sur le premier fichier CSV, avec ma condition je récupère exactement ce que je veux avec l'affichage de $line
foreach($line in Get-Content .\RESULTATS_POWERSHELL.CSV) {
if($line -like "*@mondomaine.com*"){
$line
}
}
Je voudrais maintenant exporter ce nouveau traitement dans un fichier CSV, j'ai essayé avec cette ligne dans le if à la place de juste $line, mais ça ne donne rien
$line | Export-Csv ".\RESULTATS2_POWERSHELL.CSV" -NoTypeInformation -Delimiter:";" -Encoding:UTF8
Est-ce que quelqu'un pourrait m'aiguiller là dessus, ça serait très gentil !
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 2 ans 4 mois #31566
par Philippe
Réponse de Philippe sur le sujet Export en fichier csv après traitement
salut dumont
plusieurs solutions :
solution 1
Add-Content pour rajouter ligne par ligne tes données dans un fichier
tu doit vider et créé le fichier avec l'entête CSV avant
solution 2
le append du export-CSV (oui c'est tout bête mais normalement dans ce cas tu doit lire le csv avec import-csv et non pas get-content mais ça te tente)
solution 3
l'export-csv en fin de boucle (à testé suivant les situations ) normalement dans ce cas tu doit lire le csv avec import-csv et non pas get-content :
comme tu vois il y a des solutions, a toi de voir celle que tu préfère et qui fonctionne !
a+
plusieurs solutions :
solution 1
Add-Content pour rajouter ligne par ligne tes données dans un fichier
tu doit vider et créé le fichier avec l'entête CSV avant
foreach ($line in Get-Content .\RESULTATS_POWERSHELL.CSV) {
if($line -like "*@mondomaine.com*"){
$line | Add-Content -path ".\RESULTATS2_POWERSHELL.CSV"
}
}
solution 2
le append du export-CSV (oui c'est tout bête mais normalement dans ce cas tu doit lire le csv avec import-csv et non pas get-content mais ça te tente)
$line | Export-Csv ".\RESULTATS2_POWERSHELL.CSV" -NoTypeInformation -Delimiter:";" -Encoding:UTF8 -append
solution 3
l'export-csv en fin de boucle (à testé suivant les situations ) normalement dans ce cas tu doit lire le csv avec import-csv et non pas get-content :
foreach ($line in Get-Content .\RESULTATS_POWERSHELL.CSV) {
if($line -like "*@mondomaine.com*"){
$line
}
} | Export-Csv ".\RESULTATS2_POWERSHELL.CSV" -NoTypeInformation -Delimiter:";" -Encoding:UTF8
comme tu vois il y a des solutions, a toi de voir celle que tu préfère et qui fonctionne !
a+
Les utilisateur(s) suivant ont remercié: dumont
Connexion ou Créer un compte pour participer à la conversation.
- dumont
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 2 ans 4 mois - il y a 2 ans 4 mois #31568
par dumont
Réponse de dumont sur le sujet Export en fichier csv après traitement
Bonjour Philippe !
Merci beaucoup, ça fonctionne !
J'ai essayé les 3 méthodes mais ça ne reprend pas les noms de colonnes du premier CSV RESULTATS_POWERSHELL.CSV, je vais je pense en avoir besoin après car je dois comparer des users AD aux lignes du CSV pour ajouter des valeurs dans des attributs
Tu penses que c'est simplement la condition if qui fait que la première ligne avec les noms de colonnes est supprimée ?
EDIT: à priori rien a voir avec le if, il y a juste sur la première méthode que ça enlève les noms de colonnes, pour les deux autres ça les laisse mais tout est dans une seule colonne
Merci beaucoup, ça fonctionne !
J'ai essayé les 3 méthodes mais ça ne reprend pas les noms de colonnes du premier CSV RESULTATS_POWERSHELL.CSV, je vais je pense en avoir besoin après car je dois comparer des users AD aux lignes du CSV pour ajouter des valeurs dans des attributs
Tu penses que c'est simplement la condition if qui fait que la première ligne avec les noms de colonnes est supprimée ?
EDIT: à priori rien a voir avec le if, il y a juste sur la première méthode que ça enlève les noms de colonnes, pour les deux autres ça les laisse mais tout est dans une seule colonne
[xml]$fichierxml = Get-Content ".\fichier.xml"
$fichierxml.noeud1.noeud2 | Export-Csv ".\complet.csv" -NoTypeInformation -Delimiter:";" -Encoding:UTF8
Remove-Item .\trie.csv
foreach($line in Get-Content .\complet.csv)
{
if($line -like "*@mondomaine.fr*")
{
$line
$line | Add-Content -path ".\trie.csv"
}
}
Dernière édition: il y a 2 ans 4 mois par dumont.
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 2 ans 4 mois #31569
par Philippe
Réponse de Philippe sur le sujet Export en fichier csv après traitement
en faite ton probleme est que tu lis le fichier par un get-content, ce qui fait que tu perd la ligne entete !
la meilleur solution c'est de faire une boucle en utilisant import-csv :
et d'utilisé la solution 2 'le append)
il va falloir aussi indiquer dans la condition du if sur quelle attribut faire la recherche du nom de domaine (j'ai mis UserPrincipalName mais tu peux changer)
la meilleur solution c'est de faire une boucle en utilisant import-csv :
et d'utilisé la solution 2 'le append)
il va falloir aussi indiquer dans la condition du if sur quelle attribut faire la recherche du nom de domaine (j'ai mis UserPrincipalName mais tu peux changer)
$alllinescsv = Import-Csv ".\complet.csv" -NoTypeInformation -Delimiter:";" -Encoding:UTF8
foreach ($line in $alllinescsv)
{
if ($line.UserPrincipalName -like "*@mondomaine.fr*")
{
$line
$line | export-csv -append -path ".\trie.csv" -NoTypeInformation -Delimiter:";" -Encoding:UTF8
}
}
Les utilisateur(s) suivant ont remercié: dumont
Connexion ou Créer un compte pour participer à la conversation.
- dumont
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 2 ans 4 mois - il y a 2 ans 4 mois #31571
par dumont
Réponse de dumont sur le sujet Export en fichier csv après traitement
Bonjour Philippe, merci énormément pour ton aide, je commence à saisir un peu les différents problèmes que j'ai rencontré !
Ma dernière étape est de passer en revue ce fichier csv sur un active directory et de dire que si je trouve le nom de la personne et le mail, alors je fais une action sur son compte (ajouter un attribut qui est dans ce même csv)
J'ai essayé ça:
Mais ça ne me ressort rien pour le moment
EDIT:
J'ai pu trouver ça, par contre ça ne me ressort que des $false
Ma dernière étape est de passer en revue ce fichier csv sur un active directory et de dire que si je trouve le nom de la personne et le mail, alors je fais une action sur son compte (ajouter un attribut qui est dans ce même csv)
J'ai essayé ça:
Import-Module ActiveDirectory
$csvtrie = Import-Csv ".\trie.csv" -Delimiter:";" -Encoding:UTF8
foreach ($line in $csvtrie)
{
Get-ADUser -Filter "Name -eq '$($line.Nom)'" | write-Host 'mon action'
}
Mais ça ne me ressort rien pour le moment
EDIT:
J'ai pu trouver ça, par contre ça ne me ressort que des $false
$csv = Import-Csv ".\trie.csv" -Delimiter:";" -Encoding:UTF8
ForEach ($user in $csv)
{
$nom = $user.Nom;
$adsearch = Get-ADUser -Filter {(Name -eq $nom) -and (Enabled -eq $true)}
if ($adsearch)
{
$true
}
else
{
$false
}
}
Dernière édition: il y a 2 ans 4 mois par dumont.
Connexion ou Créer un compte pour participer à la conversation.
- dumont
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 2 ans 4 mois #31572
par dumont
Réponse de dumont sur le sujet Export en fichier csv après traitement
J'ai bien trouvé avec quelque chose comme ça, je pense que c'est execrable niveau code mais ça fonctionne
Import-Module activedirectory
$csv = Import-Csv ".\trie.csv" -Delimiter:";" -Encoding:UTF8
ForEach ($user in $csv)
{
$mail = $user.Courriel;
$nom = $user.Nom;
$prenom = $user.Prenom;
$displayname = "$prenom $nom";
$adsearch = Get-ADUser -Filter {(Mail -eq $mail) -and (DisplayName -eq $displayname) -and (Enabled -eq $true)}
if ($adsearch)
{
$mail
}
else
{
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>> ne trouve pas pour $displayname - $mail";
}
}
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.087 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Export en fichier csv après traitement