La creazione di oggetti personalizzati e utilizzando l'uscita
-
12-09-2019 - |
Domanda
Sto usando il seguente per leggere una riga da un intero carico di file di testo e quindi sintesi di tali dati in un unico file.
$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
}
Quando eseguo il codice uscite Write-Output tutti i record come previsto, ma l'Export-CSV contiene solo l'ultimo record. Che cosa sto facendo di sbagliato?
Soluzione
Si sovrascrivere il file CSV con ogni iterazione del ciclo. Credo che il seguente dà quello che stai dopo assumendo ogni file CSV ha solo quattro colonne (cioè computer, utente, data, ora):
Get-content computers.txt | foreach-object {
import-csv "$computer.txt" -Header $header | Select -first 1
} | Export-csv $users -notype
Altri suggerimenti
Creare una variabile di array e aggiungere ogni $ obj ad esso. Dopo il ciclo foreach, esportare l'array di oggetti per esempio:.
$arr = @()
foreach (...) {
...
$arr += $obj
}
$arr | Export-csv -path $users -notype
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow