我的对象的结构是这样的
$ToExport = [pscustomobject]@{
"samAccountName" = ''
"forwarded" = @{
"ForwardTo" = ""
"RedirectTo" = ""
}
}
当我现在尝试将其导出到 CSV 时,我实现了两件事,首先我收到 samaccountname,并且在转发下仅出现 System.Collections.Hashtable。第二种可能包括
Select * -ExpandProperty "forwarded"
现在导出中不再显示 samAccountname,仅显示转发对象的名称以及 ForwardedTo 和 RedirectedTO 两个对象
如果这很重要:脚本的目的是遍历所有邮箱并显示所有转发规则,这也是转发是一个可以包含多个条目的哈希表的原因。
是否有可能以结构化方式将此对象放入 csv 中,还是必须使用 Json 或任何其他类型的数据结构?
提前感谢您的帮助。
正如评论中所建议的,一种折衷方案是将 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