【发布时间】:2020-01-10 09:17:01
【问题描述】:
我的数组$list 包含多个对象类型。一个是字符串,一个是
PSCustomObject.
当我将它通过管道传送到Export-Csv 时,我得到的只是第一个返回无用结果的字符串对象。
PS C:\data\functions> $list | gm
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
Clone Method System.Object Clone(), System.Object ICloneable.Clone()
CompareTo Method int CompareTo(System.Object value), int CompareTo(string strB), int IComparable.Co...
--- Output removed ----
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Direction NoteProperty string Direction=both
Hostname NoteProperty string Hostname=Desktop1
Target NoteProperty string Target=Rental
PS C:\data\functions> $list| Export-Csv -Path "c:\data\list.txt" -NoTypeInformation
PS C:\data\functions> Get-Content "C:\data\list.txt"
"Length"
"5"
我试图通过使用将对象转换为 PSCustomObject
[PSCustomObject] $list 和 [PSCustomObject[]] $list 。
我试过$list | out-File -FilePath "c:\data\list.txt"。这确实给了我显示在终端中的数组内容
hello
Hostname : Desktop1
Target : Rental
Hostname : Desktop2
Target : Rental
Hostname : Desktop3
Target : Rental
Hostname : Desktop4
Target : Rental
我希望得到一个 CSV 文件
【问题讨论】:
-
如果您 想要 生成无效的 csv,请先使用
ConvertTo-Csv转换数组,然后与您的字符串组合并写入到带有Set-Content或Out-File的文件 -
$list | Where-Object {$_ -is [PSCustomObject]} | Export-Csv ...? -
@iRon 这不起作用 -
[PSCustomObject]自己解析为[psobject],而 PowerShell 中的所有内容都是[psobject]:) 这应该可以解决问题:$list |? {$_ -isnot [string]} |Export-Csv ...跨度> -
@Mathias,经典错误,我应该知道/测试它。我实际上是想强制澄清一下,Fredrik 是否想要过滤的有效 CSV 文件或顶部带有字符串的无效 CSV。这个问题不清楚。
-
@iRon:令人困惑的是,类型加速器
[pscustomobject]与[psobject]相同,但是-is [System.Management.Automation.PSCustomObject]工作可靠。
标签: arrays powershell export-to-csv