他們幾乎是一樣的。不應該有任何大的區別,當涉及到性能和上市時間:
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
使用WriteObject()
將CSV對象(字符串)寫入管道,而Export-CSV
使用StreamWriter
直接將其寫入文件。
要親自找到它,您可以查看Microsoft.PowerShell.Commands.Utility.dll
。我不會直接發佈代碼,因爲我不確定它是否合法。 :-)
如果您需要通過第三方API等顯示或發送CSV輸出,請使用ConvertTo-CSV
。如果您需要將數據存儲在CSV文件中,則應使用Export-CSV
。
很乾淨,理解@Frode thx – AymenDaoudi