在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中展平数组的主要内容,如果未能解决你的问题,请参考以下文章

展平 Powershell 对象中的子数组,包括父对象属性

在 powershell 中展平 netstat 命令输出

在 powershell 中展平 netstat 命令输出

在 Powershell 中输出数组的哈希表

将文件扩展名作为参数传递给powershell脚本

PowerShell:如何在 PowerShell 中将数组对象转换为字符串?