Résolu Concatenation de 2 rapports (.txt et .csv)

Plus d'informations
il y a 4 ans 2 mois - il y a 4 ans 2 mois #29965 par narwo
Bonjour tout le monde :)

Je souhaiterais concaténer 2 rapports générés via PowerShell (qui vont chercher eux meme des données dans des rapports .log et .csv) qui ont pour commun des noms d'usagers trappés ici dans une variable $userName

Le rapport .txt est de type
user1 dataX dataY etc...
user2 dataZ dataZA etc
user3 etc ...

et le rapport .csv a la meme liste d'usager avec des données différentes comme :
user1 data99 data100 etc

(je pense que vous avez compris :))

Et donc je souhaite ajouter les données du rapport .txt vers le fichier csv. par exemple ajouter les données d'un usager que j'ai dans le rapport .txt et l'ajouter vers la ligne correspondante à cet usager sur une colonne à la fin de la ligne.
Pour arriver si on reprend les exemples ci dessus au résultat dans le rapport csv
user1 data99 data100 DataX DataY

j'ai en tete quelque chose du genre :
$csvReport = 'csvPath'
$csvFile = Get-content $csvPath
$txtrReport = 'txtPath'
$txtFile = Get-content $txtPath

foreach ($line in $txtFile)
 {
 if ($line -match $userName)
  {
  add-content $data -path $csvReport -column x
  }
 }
(je sais que ce qui est noté ci dessus est incorrect c'est justement aussi parce que je ne sais pas travailler dans un csv via powerShell que je vous demande :) )

J'espere que mon explication n'est pas trop floue, auquel cas demandez moi des précision et je rectifierai au fur et à mesure.

Merci beauoup pour votre aide, je bloque un peu !
Narwo
Dernière édition: il y a 4 ans 2 mois par Arnaud Petitjean. Raison: Mise en forme du code

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

Plus d'informations
il y a 4 ans 2 mois - il y a 4 ans 2 mois #29968 par narwo
It took me a few hours, but I found a way :
$line=''
$data1=''
$data2=''
foreach ($line in $txtReportContent)
    {
    # username
    $line=$line.split()
    $username=$line[0]
    write-host = "UserName = $username"

    #data1
    $data1=$line[1]
   
    #data2
    $data2=$line[2]    

    $csvline=''
    foreach($csvline in $csvReportContent)
        {
        if ($csvline -match $username)
            {
            Add-Content -Path $niceCsvReport -Value $csvline";"$data1";"$data2
            write-host $csvline ";"$data1 ";"$data2

            }
        }
Dernière édition: il y a 4 ans 2 mois par Arnaud Petitjean. Raison: Mise en forme du code

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

Plus d'informations
il y a 4 ans 2 mois #29972 par Arnaud Petitjean
Hello,

Bravo si tu as réussi, le but étant de parvenir au résultat escompté ! ;)

Mais il aurait été aussi possible (et plus dans l'esprit PowerShell) d'importer tes données sous forme d'un tableau d'objets avec la commande Import-CSV, modifier tes données, puis exporter ton tableau avec Export-CSV.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Les utilisateur(s) suivant ont remercié: narwo

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

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