Erstellen von benutzerdefinierten Objekten und mit dem Ausgang
-
12-09-2019 - |
Frage
Ich verwende die folgenden eine Zeile aus einer ganzen Last von Textdateien zu lesen und dann diese Informationen in einer Datei zusammenfassen.
$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
}
Wenn ich führen Sie den Code der Write-Output-Ausgänge alle Datensätze wie erwartet, aber der Export-CSV enthält nur den letzten Datensatz. Was mache ich falsch?
Lösung
Sie überschreiben die CSV-Datei mit jeder Schleife Iteration. Ich glaube, die folgende gibt, was Sie nach jeder CSV-Datei unter der Annahme hat nur vier Spalten (d Computer, Benutzer, Datum, Uhrzeit):
Get-content computers.txt | foreach-object {
import-csv "$computer.txt" -Header $header | Select -first 1
} | Export-csv $users -notype
Andere Tipps
Erstellen Sie ein Array-Variable und fügen Sie jeden $ obj zu. Nach der foreach-Schleife, exportieren Sie das Array von Objekten z.
$arr = @()
foreach (...) {
...
$arr += $obj
}
$arr | Export-csv -path $users -notype
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow