创建具有多个列的csv文件

时间:2020-08-17 06:25:16

标签: powershell

我有多个PSCustomObject,并且要将这些值存储在一个csv文件中。

我的代码将值存储在csv文件中,但我总是得到只有一列的csv文件。

这是我创建csv文件的代码:

function Create-CSVFile
{
    <#
    Create a CSV file with the information of the xml files
    #>
    [CmdletBinding ()]
    Param
    (
         [Parameter(
            Mandatory,
            Position=0)] 
         [PSCustomObject] $values
    )
    $csvFile = Join-Path -Path $PSScriptRoot -ChildPath "xmlInformation.csv"
    $values | Export-Csv $csvFile -NoTypeInformation
 }

这是我的PSCustomObject的定义:

[PSCustomObject]@{
  'ID' = $metadata.id
  'Owners' = $metadata.owners
}

这是我的PSCustomObject的示例:

ID                              Owners                          
--                              ------                          
32472304239472304               Klaus,Hans
35057435349563444               Michael
54353453453453455               Olaf
12354534534534553               Anna,Thomas

这是csv文件的结果:

"ID","Owners"
"32472304239472304","Klaus,Hans"
"35057435349563444","Michael"
"54353453453453455","Olaf"
"12354534534534553","Anna,Thomas"

csv文件中的行看起来不错,但是所有内容都放在第一列中。

2 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您正在通过双击csv文件查看结果,因此该文件将在Excel中打开。

您系统的语言环境-因此也就是Excel-可以使用与标准逗号不同的分隔符。

要生成具有与Excel相同的分隔符的csv文件,请添加开关-UseCulture

Export-Csv $csvFile -UseCulture -NoTypeInformation

答案 1 :(得分:0)

您的函数看起来不错,错误可能是您调用该函数的方式吗?

这是我尝试的方式:

$myObject = [PSCustomObject]@{
    a = 22
    b = 33
}

Create-CSVFile $myObject

结果:

"a","b"
"22","33"