在 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"}

输出

更新于: 2022年2月18日

8K+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告