Vra

Ek gebruik die volgende om 'n reël te lees van 'n hele vrag van teks lêers en dan 'n opsomming van die inligting in 'n lêer.

$computers = Get-content computers.txt
$users = users.csv
$header = 'Computer','User','Date','Time'

Foreach ($computer in $computers)
{
$file = $computer +'.txt'

$a = import-csv $file -Header $header | Select -first 1 
$obj = New-Object PSObject
$obj | Add-Member NoteProperty Computer ($a.Computer)
$obj | Add-Member NoteProperty User ($a.User)
$obj | Add-Member NoteProperty Date ($a.Date)
$obj | Add-Member NoteProperty Time ($a.Time)

Write-Output $obj
$obj | Export-csv -path  $users -notype
}

Wanneer ek die kode die Write-Uitgawe uitgange al die rekords as wat verwag is, maar die Uitvoer-CSV hardloop bevat slegs die laaste rekord. Wat doen ek verkeerd?

Was dit nuttig?

Oplossing

U oor skryf die CSV met elke herhaling van die lus. Ek glo die volgende gee wat jy na die aanvaarding van elke CSV het net vier kolomme (d.w.z Computer, Gebruiker, Datum, Tyd):

Get-content computers.txt | foreach-object {
    import-csv "$computer.txt" -Header $header | Select -first 1 
} | Export-csv $users -notype

Ander wenke

Skep 'n skikking veranderlike en voeg elke $ obj om dit te. Na die foreach lus, die uitvoer van die verskeidenheid van voorwerpe Bv:.

$arr = @()

foreach (...) {
    ...
    $arr += $obj
}

$arr | Export-csv -path  $users -notype
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top