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

标签 powershell pscustomobject

我正在使用以下内容从一整堆文本文件中读取一行,然后将该信息汇总到一个文件中。

$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 仅包含最后一条记录。我做错了什么?

最佳答案

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

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

关于powershell - 创建自定义对象并使用输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/966869/

相关文章:

windows - 如何否定 PowerShell 中的条件?

arrays - Powershell:作为函数参数的 PSCustomObject 数组意外更改

powershell - 按添加顺序导出数据-PowerShell Export-Csv

powershell - 如何初始化自定义对象数组

arrays - 如何将自定义属性添加到PowerShell数组?

loops - Powershell自定义对象-不传递foreach变量

类似 :? 运算符的 PowerShell 语法?

powershell - Foreach - 并行对象

azure - Powershell AzureADPreview cmdlet Set-AzureADApplication "PreAuthorizedApplications"参数的正确语法是什么?

c# - 无法加载ps1,因为此系统上禁用了运行脚本