【问题标题】:How to select object type when exporting to csv in powershell在powershell中导出到csv时如何选择对象类型
【发布时间】: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-ContentOut-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


【解决方案1】:

我会说你必须选择你想要的属性,否则它不会全部保存。

$a = [pscustomobject]@{name='Joe'}
$b = [pscustomobject]@{address='here'}
$a,$b | select name,address | export-csv all.csv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多