在 PowerShell 中导入/导出 CSV 文件
在本文中,我们将使用 PowerShell 中的 CSV 文件,这被认为是处理数据最有效的方法之一。
我们已为本文考虑以下几点。
使用 PowerShell 将数据导出到 CSV 文件。
使用 PowerShell 从 CSV 文件导入数据。
让我们开始吧。
使用 PowerShell 将数据导出到 CSV 文件
使用直接命令输出
要将数据导出到 PowerShell 中的 csv 文件,我们可以使用**Out-File**,这是将输出存储到文件的常用 cmdlet。以下命令将在 csv 文件中获取前 10 个 CPU 使用率最高的进程。
示例
Get-Process | Sort-Object CPU -Descending | Select -First 10 | Out-File C:\Temp\Top10Procs.csv
输出
让我们检查 csv 文件。
如您所见,cmdlet 可以检索输出,但输出位于单个列中,这降低了用户的可读性,也不是处理数据的有效方法。
PowerShell 提供了另一个内置 cmdlet,**Export-CSV**,它将数据转储到 csv 文件中。我们必须为此命令选择属性,因为某些命令在输出导出到 csv 文件时会公开所有属性。
示例
Get-Process | Sort-Object CPU -Descending | Select -First 10 | ` Select Name, id, CPU, WorkingSet | Export-Csv C:\Temp\Top10Procs.csv
输出
如果您注意到,输出显示了类型信息(以黄色突出显示)。如果我们不需要它,则在**Export-Csv** cmdlet 的末尾添加**-NoTypeInformation** 参数。
如果您正在处理一个需要将数据追加到 csv 文件的脚本,则使用**-Append** 参数。例如,如下所示,我们在 foreach 循环中使用了上述相同命令来追加数据。
$procs = Get-Process | Sort-Object CPU -Descending | Select -First 10 | ` Select Name, id, CPU, WorkingSet foreach($proc in $procs){ $proc | Export-Csv C:\Temp\Top10Procs.csv -NoTypeInformation -Append }
使用 PSCustomObject
您还可以从哈希表或 PSCustomObject 导出 csv 文件。例如,
[PSCustomObject]@{ Name = 'OneDrive' ID = '1001' Memory_Usage = '20%' CPU_Usage = '10%' } | Export-Csv C:\Temp\SingleProcessInfo.csv -NoTypeInformation
从 CSV 文件导入数据
从 csv 文件导入数据与从 csv 文件导出数据一样简单。要从 csv 文件导入数据,我们需要使用内置 cmdlet **Import-CSV**。
让我们考虑前面创建的前 10 个高 CPU 利用率进程的文件的示例。以下命令将导入该 csv 文件。
示例
Import-Csv C:\Temp\Top10Procs.csv
输出
我们可以对其执行与在管道输出上执行的常规操作。
Import-Csv C:\Temp\Top10Procs.csv | Select -First 2
要选择特定属性,
Import-Csv C:\Temp\Top10Procs.csv | Select Name, ID
我们可以使用管道对 csv 输出的数据进行排序。
Import-Csv C:\Temp\Top10Procs.csv | Sort-Object -Property Name
过滤特定数据,
示例
Import-Csv C:\Temp\Top10Procs.csv | where{$_.Name -eq "OneDrive"}