Powershell CSV-Import nach HTML in Tabelle

506
Klaus B

Ich versuche, eine CSV-Datei mit Powershell in HTML zu konvertieren. Es nimmt nur die letzte Zeile in der CSV-Datei und nicht alle Zeilen.

Ich bin neu bei Powershell, also hoffe jemand kann mir helfen


$users = import-csv “C:\fso\names.csv” $Report = ForEach ($item in $users) { # I like to assign each property value to a simpler named variable, but it’s not necessary $firstName = $item.(“fornavn”) $lastName = $item.(“efternavn”) } $Report | ConvertTo-Html -Head $css -Body "<h1>Adresseliste</h1>`n<h5>Generated on $(Get-Date)</h5><table><tr><td><p>$firstname<p><td><p>$lastname</p></td></td></tr></table>" | Out-File "C:\fso\test.html" 
0
Normalerweise ist diese Frage für StackOverflow besser geeignet, da sie nicht wirklich im Bereich des Superbenutzers liegt. In der Regel finden Sie im Hilfebereich einige Informationen zum Thema "Exchange". Wenn Sie dies noch nicht getan haben, nehmen Sie sich vielleicht die Zeit, etwas davon zu lesen, wie zum Beispiel den Abschnitt [Fragen] (https://superuser.com/help/how-to-ask). Es wird Ihnen helfen, bessere und wahrscheinlich schnellere Antworten zu erhalten. Seth vor 5 Jahren 0

2 Antworten auf die Frage

0
Seth

Sie ordnen nie wirklich etwas zu $Report. Sie müssen die HTML-Konvertierung innerhalb der Schleife durchführen. Derzeit durchlaufen Sie jedes Element und überschreiben es $firstNameund $lastNamebei jeder Wiederholung. Sie beenden die Schleife und haben den letzten Wert für die endgültige Ausgabe.

Um ein Beispiel zu geben:

Nehmen wir an, Sie möchten die Zahl eins bis zehn mit einer Schleife summieren. Was Sie gerade tun, ist das Folgende.

$numbers = 1..10 $sum = 0 foreach($number in $numbers){ $sum = $number } Write-Output $sum 

Sie geben die Nummer an, die Sie gerade halten, als Summe. Was Sie in diesem Fall tatsächlich tun möchten, ist, die Summe bei jeder Iteration zu addieren.

$numbers = 1..10 $sum = 0 foreach($number in $numbers){ $sum = $sum + $number } Write-Output $sum 

Was bedeutet das für Ihren Code? Sie müssen Ihren HTML-Code innerhalb der Schleife erstellen. Ihr Ansatz, die Ausgabe der foreach-Schleife an die $repotVariable zu übergeben, kann tatsächlich dazu verwendet werden. Es generiert gerade keine Ausgabe, weil Sie nur eine Zuweisung machen (die hoffentlich keinen Fehler macht). Die folgende Änderung gibt Ihnen einen String mit der Ausgabe jedes Vor- und Nachnamens für jedes Element. Sie können dies verwenden, um HTML zu generieren. Ein alternativer Ansatz wäre ähnlich, indem $reportjeder Iteration eine Summe hinzugefügt wird.

$Report = ForEach ($item in $users) { $firstName = $item.(“fornavn”) $lastName = $item.(“efternavn”)  Write-Output $firstname,$lastName } 

PS ist sich bewusst, dass Foreach und ForEach-Object unterschiedliche Dinge sind. Letzterem werden Sie wahrscheinlich häufiger begegnen, insbesondere wenn Sie die Abkürzung verwenden %. Ein Hauptunterschied besteht darin, dass Sie nicht continueoder breakinnerhalb von Letzteren verwenden können, sondern stattdessen einen anderen Mechanismus verwenden müssen return.

0
Klaus B

Entschuldigung für meine blöden Fragen

Aber ich kann jetzt alle Zeilen mit Write-Output drucken, aber ich kann die HTML-Ausgabe nicht zum Laufen bringen. Können Sie mir vielleicht in die richtige Richtung helfen?