2009-06-08 16 views
2

私は以下を使用して、テキストファイルの全負荷から1行を読み込み、その情報を1つのファイルに要約します。カスタムオブジェクトを作成して出力を使用する

$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 
} 

Write-Outputはすべてのレコードを期待どおり出力しますが、Export-CSVには最後のレコードしか含まれていません。私は間違って何をしていますか?

答えて

4

csvファイルをループの各繰り返しで上書きしています。次の例では、各CSVファイルにコンピュータ、ユーザー、日付、時間の4つの列しかないと仮定した後、あなたがしていることがわかります。

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

配列変数を作成し、それぞれに$ objを追加します。 foreachループの後に、オブジェクトの配列をエクスポートします。例:

$arr = @() 

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

$arr | Export-csv -path $users -notype 
関連する問題