创建自定义对象并使用输出

问题描述:

我使用以下命令从整个文本文件加载中读取一行,然后将该信息汇总到一个文件中。创建自定义对象并使用输出

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

当我运行代码时,写输出按预期输出所有记录,但Export-CSV仅包含最后一条记录。我究竟做错了什么?

您正在用每次循环迭代覆盖csv文件。我相信以下给出你假设每个csv文件只有四列(即计算机,用户,日期,时间)后的内容:

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