在powershell中展平数组
Posted
技术标签:
【中文标题】在powershell中展平数组【英文标题】:Flattening an array in 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@然后再次导出,如果您需要更精确的解决方案,请将您的代码添加到问题中
【参考方案1】:
将Select-Object
与calculated 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。以上是关于在powershell中展平数组的主要内容,如果未能解决你的问题,请参考以下文章