gpt4 book ai didi

windows - PowerShell:(ConvertTo-* | Set-Content) 和 (Export-*) 之间的区别?

转载 作者:可可西里 更新时间:2023-11-01 11:29:17 26 4
gpt4 key购买 nike

我是 PowerShell 的新手,正在尝试以编写方式学习,我注意到在这种情况下我可以以多种不同的方式导出数据,我想问的是这种情况,

Get-Process | ConvertTo-Csv | Set-Content -Path .\Process.txt

和:

 Get-Process | Export-Csv -Path .\Process.txt

两者都将进程列表导出到我桌面上的 CSV 文件中,并给出相同的结果。

第一个:

首先将流程转换为 CSV,然后将其写入文件。

第二个:

将进程直接导出到文件。

这两种情况之间到底有什么区别,是否存在性能差异、执行时间差异或其他我不知道的问题?

最佳答案

它们几乎相同。在性能和时间方面应该没有什么大的区别:

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-CSVConvertTo-CSV 运行 90% 的相同代码。它们共享相同的帮助程序类 Microsoft.PowerShell.Commands.ExportCsvHelper 以创建 header 并将对象转换为 csv。唯一的区别是 ConvertTo-CSV 使用 WriteObject() 将 CSV 对象(字符串)写入管道,而 Export-CSV 直接使用 StreamWriter 将其写入文件。

要自己找到它,您可以查看 Microsoft.PowerShell.Commands.Utility.dll。我不会直接发布代码,因为我不确定它是否合法。 :-)

如果您需要通过第三方 API 等显示或发送 CSV 输出,请使用 ConvertTo-CSV。如果您需要将数据存储在 CSV 文件中,则应使用 Export-CSV

关于windows - PowerShell:(ConvertTo-* | Set-Content) 和 (Export-*) 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com