跨列将变量写入现有 CSV

Write variables to existing CSV across columns

这是一个关于 Out-File 的限制和将字符串值转换为 objects 以使用 Export-CSV.

的两部分问题

我正在编写一个脚本来提取各种信息并将其添加到现有的 csv 文档中。我目前正在使用 Out-File,但我认为它没有所需的功能。

$date, $computerName, $env:UserName, 'error' | Out-File $report -Append

上面把所有的数据都加到一个列中,例如:

date
computername
username
error

我希望它是:

date computername username error

我曾尝试使用 Export-CSV,但由于我的变量是字符串,所以它只写入字符串长度而不是变量。我很乐意将 Export-CSV-Append 一起使用,只要它能正确报告项目即可。

如果我们能让 table 拥有 headers 的奖励积分:

date computername username error
8/15/2018 A1 Bob PowerIssue
8/15/2018 A2 Tom InternetIssue

$date, $computerName, $env:UserName, 'error' 是一个正在转换为字符串数组的集合。那么 Out-File 获取该数组的每个元素并每行吐出一个元素。

您可以生成单个字符串。例如,

"$date, $computerName, $env:UserName, error" | Out-File $report -Append

但更好的方法是制作一个对象,然后将其导出到 csv。这是一个使用 [pscustomobject] 的示例,它需要 PS3+

$ExampleObjects = @(
    [pscustomobject]@{
        Date         = Get-Date
        ComputerName = 'A1'
        UserName     = 'Bob'
        Error        = 'PowerIssue'
    },
    [pscustomobject]@{
        Date         = Get-Date
        ComputerName = 'A2'
        UserName     = 'Tom'
        Error        = 'InternetIssue'
    }
)

$ExampleObjects | Export-CSV $report -Append -NoTypeInformation