它们几乎相同。在性能和时间方面应该没有什么大的区别:
Measure-Command { Get-Process | ConvertTo-Csv | Set-Content -Path .\Process.txt }
Days : 0
Hours : 0
Minutes : 0
Seconds : 2
Milliseconds : 880
Ticks : 28801761
TotalDays : 3,33353715277778E-05
TotalHours : 0,000800048916666667
TotalMinutes : 0,048002935
TotalSeconds : 2,8801761
TotalMilliseconds : 2880,1761
Measure-Command { Get-Process | Export-Csv -Path .\Process2.txt }
Days : 0
Hours : 0
Minutes : 0
Seconds : 2
Milliseconds : 772
Ticks : 27724661
TotalDays : 3,20887280092593E-05
TotalHours : 0,000770129472222222
TotalMinutes : 0,0462077683333333
TotalSeconds : 2,7724661
TotalMilliseconds : 2772,4661
这是因为Export-CSV
和ConvertTo-CSV
运行 90% 的代码相同。它们共享相同的帮助类Microsoft.PowerShell.Commands.ExportCsvHelper
来创建标题并将对象转换为 csv。唯一的区别是使用ConvertTo-CSV
将 CSV 对象(字符串)写入管道WriteObject()
,而使用 .Export-CSV
直接将其写入文件StreamWriter
。
要自己找到这个,你可以看看里面Microsoft.PowerShell.Commands.Utility.dll
。我不会直接发布代码,因为我不确定它是否合法。:-)
如果您需要通过第三方 API 等显示或发送 CSV 输出,请使用ConvertTo-CSV
. 如果您需要存储在 CSV 文件中的数据,那么您应该使用Export-CSV
.