【问题标题】:Flattening an array in powershell在powershell中展平数组
【发布时间】:2022-01-03 01:57:10
【问题描述】:

我有一些代码从 API 中提取到名为 $table 的变量中。我可以毫无问题地将此变量导出到 csv,除了表中的最后一个字段 ($table.userdefinedfields) 导出为 SystemObject[]

我想要的是一个由$table 的第一个和第三个字段以及SystemObject[] 的第29 个字段组成的三列表。

我对powershell不是很精通,但这一定是可以的。

有什么想法吗?

【问题讨论】:

  • 有可能。您能否编辑您的帖子以包含 API 调用的原始结果(根据需要清理值)?
  • 其实SystemObject[]是Array of Elements,CSV文件只能显示单个字符串元素,快速简单的解决方法是用逗号(或任何其他字符)加入Array元素,例如@ 987654327@然后再次导出,如果您需要更精确的解决方案,请将您的代码添加到问题中

标签: arrays powershell


【解决方案1】:

Select-Objectcalculated property 一起使用:

$table | 
  Select-Object -ExcludeProperty userdefinedfields -Property *, @{
    Name = 'Field29' # change as needed
    Expression = { $_.userdefinedfields[28] }
  } # | Export-Csv ...

以上使用所有原始属性(*),除了userdefinedfields属性,并添加了一个自选名称Field29的计算属性包含存储在每个输入对象的 .userdefinedfields 属性中的数组的第 29 个元素 ([28])。

由于您只想要原始属性的 子集,请将 * 替换为感兴趣的属性名称,即第一个和第三个属性的名称(例如,Foo, Bar);然后你可以省略-ExcludeProperty 参数。

【讨论】:

  • 很高兴听到这个消息,@TomRepetti;我的荣幸。请允许我在下一条评论中给你标准的建议给新人;也请考虑重新审视您之前的问题:
  • 如果您accept 回答,您将通过向他们展示解决您的问题的方法来帮助未来的读者。要接受答案,请单击答案左侧大数字下方的大 ✓ 符号(您将获得 2 点声望)。如果您至少有 15 个声望点,您还可以投票给其他有用的答案(也可以选择接受的答案)。如果您的问题尚未解决,请提供反馈,或者,如果您自己找到了解决方案,请self-answer
猜你喜欢
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 2013-05-16
  • 2015-05-17
  • 2022-01-08
  • 2019-05-07
相关资源
最近更新 更多