質問

私は、テキストファイルの全負荷から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
}

場合は、予想通り、私は、コードの書き込みアウトプット出力レコードをすべて実行されますが、エクスポート-CSVのみ最後のレコードが含まれています。私が間違って何をしているのですか?

役に立ちましたか?

解決

あなたは、各ループ反復でcsvファイルを上書きしています。私は、次の各csvファイルを仮定した後、あなたがしているものを提供します信じて持っているだけで、4つの列(すなわち、コンピュータ、ユーザー、日付、時刻):

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

他のヒント

配列変数を作成し、各$ OBJを追加します。 foreachループの後に、オブジェクト例えばの配列をエクスポートします。

$arr = @()

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

$arr | Export-csv -path  $users -notype
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top