我有多个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文件中的行看起来不错,但是所有内容都放在第一列中。
答案 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"