如何将对象转换为一系列CSV字符串并将其输出到另一个命令?
Export-Csv
cmdlet仅输出到文件。我想将CSV输出发送到另一个命令或脚本输出。
作为一种解决方法,我可以对文件使用Export-Csv
,读取文件,然后删除文件,但是这种方法有太多不必要的开销。
将对象转换为一系列逗号分隔值(CSV)字符串 并将字符串保存到文件中。
答案 0 :(得分:7)
如果要将对象转换为CSV并将结果返回到stdout而不是文件,则应使用ConvertTo-CSV cmdlet。
ConvertTo-CSV cmdlet返回一系列逗号分隔值(CSV)字符串,这些字符串代表您提交的对象。然后,您可以使用ConvertFrom-Csv cmdlet从CSV字符串重新创建对象。从CSV转换的对象是原始对象的字符串值,其中包含属性值且没有方法。
您会发现大多数内置Export-
cmdlet都具有ConvertTo-
等效项。发现cmdlet的另一种好方法是对通配符使用Get-Command
:
~> Get-Command *csv
CommandType Name Version Source
----------- ---- ------- ------
Alias epcsv -> Export-Csv
Alias ipcsv -> Import-Csv
Cmdlet ConvertFrom-Csv 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet ConvertTo-Csv 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Export-Csv 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Import-Csv 3.1.0.0 Microsoft.PowerShell.Utility
答案 1 :(得分:3)
导出csv 是转换为CSV 管道传输到文件外的组合:
例如:
Get-Process | Select-Object -property Name,ID,VM,PM | Convert-ToCSV | Out-File test2.html
您可以使用:
$a = Get-Process | Select-Object -property Name,ID,VM,PM | Convert-ToCSV