Importação de CSV do Powershell para html na tabela

0

Eu tento converter um arquivo csv para html com o Powershell. Leva apenas a última linha no arquivo csv e não todas as linhas.

Eu sou novo no powershell, então espero que alguém possa me ajudar

$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"
    
por Klaus B 19.09.2018 / 13:18

2 respostas

0

Você nunca atribui nada a $Report . Você precisaria fazer a conversão HTML dentro do loop. Atualmente você percorre cada item e sobrescreve $firstName e $lastName a cada iteração. Você finaliza o loop e tem o último valor para usar na saída final.

Para fornecer um exemplo:

Vamos supor que você queira somar o número um a dez usando um loop. O que você está fazendo atualmente é o seguinte.

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

Você está atribuindo qualquer número que esteja ocupando para ser a soma. O que você realmente quer fazer nesse caso seria adicionar a soma a cada iteração.

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

O que isso significa para o seu código? Você precisa gerar seu HTML dentro do loop. Sua abordagem de associar a saída do loop foreach à variável $repot pode realmente ser usada para isso. No momento, ele não está gerando nenhuma saída porque você está apenas fazendo uma tarefa (isso não significa erro). A seguinte modificação daria a você uma string com a saída de cada nome e sobrenome de cada item. Você poderia usar isso para gerar seu HTML. Uma abordagem alternativa seria semelhante usando $report como soma e adicionando a cada iteração.

$Report = ForEach ($item in $users)
{
    $firstName = $item.(“fornavn”)
    $lastName = $item.(“efternavn”)

    Write-Output $firstname,$lastName
}

P.S. esteja ciente de que foreach e < a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/foreach-object?view=powershell-6"> ForEach-Object são coisas diferentes. Você provavelmente encontrará o último com mais frequência, especialmente se usar o atalho % . Uma grande diferença é que você não pode usar continue ou break dentro do último, mas precisaria usar outro mecanismo como return .

    
por 19.09.2018 / 13:58
0

Desculpe por minhas perguntas estúpidas

Mas agora posso imprimir todas as linhas por meio da saída de gravação, mas não consigo fazer a saída html funcionar, talvez você possa me ajudar na direção certa?

    
por 19.09.2018 / 20:09