【问题标题】:Export-CSV or ConvertTo-CSV for Unlike ObjectsExport-CSV 或 ConvertTo-CSV 用于不同的对象
【发布时间】:2015-02-20 00:13:12
【问题描述】:

因为在允许将 cmets 添加到现有答案之前,我需要更多的声誉,所以我不得不创建自己的问题。但我的问题与此线程中的问题相同:

How to include all properties of all array objects in csv in powershell

据我所知,该线程中提出的解决方案对我不起作用。

  • 根据属性数量对对象进行排序是不安全的。 仅仅因为一个对象具有最多的属性并不意味着它具有 所有属性,这意味着我的 CSV 仍然缺少一些数据。
  • 在 $props 变量中指定属性,后跟 $objects |选择 $props | Export-CSV 对我来说似乎是不可能的。因为我的对象是根据日志文件中的数据创建的,所以我不知道要提前查找的每个潜在属性。意外的条目可能会出现在日志中,当它们出现时,它们可能是包含在我的 CSV 中的最重要的数据。我尝试了 Select *,但它的作用与根本不存在时没有什么不同。

有人有其他想法吗?希望这是基于其他线程的足够信息。

【问题讨论】:

  • 您是在创建将追加到 csv 文件的脚本,还是每次运行脚本都会收集数据并导出到新的 csv 文件(或覆盖现有文件)?
  • 您有一些我们可以使用的示例数据吗?您可以获得的房产数量是否有上限?另一个线程中的解决方案是基于不知道数据中的属性

标签: powershell csv export-to-csv


【解决方案1】:

我猜测您正在写入一个新文件。由于我们没有要修复的脚本示例,我将提供一个。这是你要找的吗?

$obj1 = [pscustomobject]@{
    Name = "Name1"
    Place = "Place1"
}

$obj2 = [pscustomobject]@{
    Name = "Name2"
    Alcohol = "Alcohol1"
}

$arr = $obj1, $obj2

#Get all possible properties from the data
$prop = $arr | % { $_.psobject.Properties | Select-Object -ExpandProperty Name } | Sort-Object -Unique

#Export data, including all possible properties
$arr | Select-Object $prop | Export-CSV .\Desktop\test.csv -Delimiter ";" -NoTypeInformation

test.csv

"Alcohol";"Name";"Place"
;"Name1";"Place1"
"Alcohol1";"Name2";

(我想我之前在 SO 上做过类似的事情,但我找不到答案。)

【讨论】:

  • 我认为没有比这更简单的了。干得好……再一次……我想。
  • 这太完美了!非常感谢你们俩。它确实突出了我的对象构造的一个问题......我没有清理属性名称。它不会伤害对象本身,但这会导致 Select-Object 在遇到包含时髦字符的属性名称时出错(错误是“指定的通配符模式无效”)。提醒您始终清理输入!
猜你喜欢
  • 2019-01-15
  • 2019-12-02
  • 2016-11-24
  • 2014-07-27
  • 2018-08-18
  • 2021-04-02
  • 2018-05-03
  • 2018-06-27
相关资源
最近更新 更多