【问题标题】:Export-Csv and Array objects导出 Csv 和数组对象
【发布时间】:2019-11-14 09:38:56
【问题描述】:

我有一个 CSV,我想在一个数组对象中处理并导出为另一个 CSV。但是,当我这样做时,它不是复制数组的值,而是复制对象的属性。

"Length","LongLength","Rank","SyncRoot","IsReadOnly","IsFixedSize","IsSynchronized","Count" "52","52","1","System.Object[]","False","True","False","52"

如何解决这个问题?

编辑

导致此问题的代码:

Export-Csv $data test.csv

其中$data 是存储import-csv 输出的数组。

【问题讨论】:

  • 请显示产生此输出的代码以及相应的示例输入。一般来说,Export-Csv 需要一个对象列表/数组作为输入,并将这些对象的属性转换为 CSV 的字段,将第一个对象的属性名称作为列标题。
  • Export-Csv $data test.csv -> $data | Export-Csv test.csv
  • 谢谢,这很有帮助

标签: powershell-6.0


【解决方案1】:

显然-InputObject 在 PowerShell v6 中成为了位置参数,否则您发布的代码应该会引发错误

Export-Csv:无法绑定参数“分隔符”。无法将值“test.csv”转换为类型“System.Char”。错误:“字符串的长度必须正好是一个字符。”

无论如何,您发布的代码正在有效运行

Export-Csv -InputObject $data -Path test.csv

但是,参数-InputObject 采用单个 PSObject 参数,而不是 PSObject 数组。如果将数组传递给它,则 CSV 输出是从该数组对象创建的,而不是从数组的元素创建的。

将数组传送到Export-Csv 以从数组元素创建输出:

$data | Export-Csv -Path test.csv -NoType

【讨论】:

    猜你喜欢
    • 2014-03-08
    • 2020-02-02
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 2021-05-26
    相关资源
    最近更新 更多