将包含哈希表的 PSCustomObject 导出到 CSV

问题描述 投票:0回答:1

我的对象的结构是这样的

$ToExport = [pscustomobject]@{
           "samAccountName" = ''
           "forwarded" = @{
                "ForwardTo" = ""
                "RedirectTo" = ""
           }
}  

当我现在尝试将其导出到 CSV 时,我实现了两件事,首先我收到 samaccountname,并且在转发下仅出现 System.Collections.Hashtable。第二种可能包括

Select * -ExpandProperty "forwarded"  

现在导出中不再显示 samAccountname,仅显示转发对象的名称以及 ForwardedTo 和 RedirectedTO 两个对象

如果这很重要:脚本的目的是遍历所有邮箱并显示所有转发规则,这也是转发是一个可以包含多个条目的哈希表的原因。

是否有可能以结构化方式将此对象放入 csv 中,还是必须使用 Json 或任何其他类型的数据结构?

提前感谢您的帮助。

powershell export-to-csv pscustomobject
1个回答
0
投票

正如评论中所建议的,一种折衷方案是将 JSON 嵌入到 CSV 中:

$flatExport = $ToExport |Select SAMAccountName,@{Name='forwarded';Expression={$_.forwarded |ConvertTo-Json -Compress}}
$flatExport |Export-Csv -Path path\to\export.csv -NoTypeInformation

如果 CSV 的最终使用者也是 PowerShell 脚本或以其他方式将

""
识别为
"
的有效转义序列,那么这将非常有效。

否则,您必须选择更适合分层数据的序列化格式,例如将整个内容导出为 JSON:

$ToExport |ConvertTo-Json -Compress |Set-Content export.json
© www.soinside.com 2019 - 2024. All rights reserved.