如何在 PowerShell 中将 CSV 文件导入数组

  1. 逗号分隔值文件
  2. 使用 Import-CSV Cmdlet 将 CSV 文件导入 PowerShell 中的数组
  3. 使用 Get-ContentConvertFrom-Csv Cmdlet 将 CSV 文件导入 PowerShell 中的数组
  4. 使用 System.IO.FileConvertFrom-Csv Cmdlet 将 CSV 文件导入 PowerShell 中的数组
  5. 结论
如何在 PowerShell 中将 CSV 文件导入数组

CSV(逗号分隔值)文件作为一种基本的数据格式,以表格结构封装信息,字段由逗号分隔。尽管通常与电子表格软件相关联,但其简洁而灵活的特性使其在包括 PowerShell 在内的各种平台上得以应用。

在 PowerShell 脚本中,高效读取和处理 CSV 数据对自动化和数据操作任务至关重要。本文探讨了三种方法——Import-CSVGet-Content cmdlet 和 System.IO.File 类及 ConvertFrom-Csv cmdlet——用于将 CSV 文件导入数组,并提供了它们的使用、优势和应用场景的见解。

逗号分隔值文件

CSV(逗号分隔值)文件包含由逗号分隔的数据或集合。这使得数据可以以表格格式保存。

用户可以通过大多数电子表格程序使用 CSV 文件,例如 Microsoft Excel 或 Google 电子表格。然而,当我们在不支持表格格式的软件中打开它时,数据将是用逗号分隔的,PowerShell 可以利用这一点将值分隔成数组。

例如,下面是一个包含两列的原始 CSV 格式。

users.csv 文件:

Name,Salary
John,1000
Paul,2000
Mary,1500
Matt,3000

使用 Import-CSV Cmdlet 将 CSV 文件导入 PowerShell 中的数组

Windows PowerShell 中的 Import-CSV 命令根据上述 CSV 文件中的项目创建类似表格的自定义对象。

在下面的 Windows PowerShell 脚本中,我们将使用 Import-CSV 命令将 CSV 文件数据分配给 Windows PowerShell 数组类型变量。

$users = Import-Csv path\users.csv
$users

我们首先使用 Import-Csv cmdlet 从位于 path\users.csv 的 CSV 文件中读取数据。此 cmdlet 读取 CSV 文件的内容并将其转换为 PowerShell 对象。

然后,我们将导入的 CSV 数据分配给变量 $users。此变量现在将 CSV 文件的内容作为对象数组保存,每个对象表示来自 CSV 文件的一行。

执行后,我们可以看到 CSV 文件值已转为名为 ArrayList 对象的格式列表。

输出:

在 PowerShell 中将 csv 文件读取到数组 - 输出 1

在 PowerShell 中导入 CSV 文件到数组后访问元素

当我们使用 Import-Csv 在 PowerShell 中导入 CSV 文件时,CSV 文件的每一行都表示为一个对象,整个 CSV 数据存储为这些对象的数组。要访问 CSV 数据中的单独行或元素,我们使用数组索引。

$users = Import-Csv path\users.csv
$users[0]

我们首先导入位于指定路径的名为 users.csv 的 CSV 文件。我们为此使用 Import-Csv cmdlet。

此 cmdlet 读取 CSV 文件的内容并将其转换为 PowerShell 对象。

导入 CSV 文件后,我们想要访问 CSV 数据的第一行。我们通过使用数组索引来实现这一目的。

在 PowerShell 中,数组索引从 0 开始,因此 $users[0] 指的是 $users 数组中的第一个元素(或行)。

输出:

在 PowerShell 中读取 CSV 文件到数组 - 输出 2

我们可以通过将列名视为属性名称来从 Windows PowerShell 数组中的特定元素查询属性,如下面的例子所示。

$users = Import-Csv path/users.csv
$users[0].Name

在导入 CSV 文件并将其内容存储在 $users 变量后,我们继续访问 CSV 数据第一行的特定属性。在这种情况下,我们想要检索第一行的 Name 属性的值。

通过指定 $users[0].Name,我们正在访问表示 CSV 数据第一行的对象的 Name 属性。这使我们能够检索与 CSV 文件中第一行的 Name 列相关联的值。

输出:

在 PowerShell 中将 CSV 文件读取到数组 - 输出 3

我们可以使用下面的 Count 属性来计算数组中的元素数量。

$users = Import-Csv path/users.csv
$users.Count

在导入 CSV 文件并将其内容存储在 $users 变量后,我们想要确定数组中的项目(行)数量。

通过使用 $users.Count,我们访问存储在 $users 变量中的数组的 Count 属性。此属性返回数组中的项目(行)数量。

输出:

在 PowerShell 中将 CSV 文件读取到数组 - 输出 4

使用 Get-ContentConvertFrom-Csv Cmdlet 将 CSV 文件导入 PowerShell 中的数组

完成此任务的一种简单方法是使用 Get-ContentConvertFrom-Csv cmdlets。此方法允许我们使用 Get-Content 以文本形式读取 CSV 文件的内容,然后使用 ConvertFrom-Csv 将其转换为 PowerShell 对象,从而创建一个表示每行 CSV 数据的对象数组。

$content = Get-Content -Path "C:\path\data.csv"
$array = $content | ConvertFrom-Csv
$array

我们首先使用 Get-Content 读取位于指定路径的 CSV 文件的内容,并将其存储在变量 $content 中。

接下来,我们将存储在 $content 中的 CSV 文件内容通过管道传递给 ConvertFrom-Csv。此 cmdlet 将 CSV 文本转换为 PowerShell 对象,并将其存储在 $array 变量中。

执行后,我们可以看到 CSV 文件值已转为名为 ArrayList 对象的格式列表。

输出:

在 PowerShell 中将 CSV 文件读取到数组 - 输出 5

使用 System.IO.FileConvertFrom-Csv Cmdlet 将 CSV 文件导入 PowerShell 中的数组

System.IO.File 类可以读取 CSV 文件内容,然后通过 ConvertFrom-Csv cmdlet 将其转换为 PowerShell 对象。此方法不仅提供了灵活性,还确保了易用性,使用户能够在其 PowerShell 脚本中无缝管理 CSV 数据。

$content = [System.IO.File]::ReadAllText("C:\path\data.csv")
$array = $content | ConvertFrom-Csv
$array

我们使用 [System.IO.File]::ReadAllText 读取位于指定路径的 CSV 文件的内容,并将其存储在 $content 变量中。

接下来,我们将存储在 $content 中的 CSV 文件内容通过管道传递给 ConvertFrom-Csv。此 cmdlet 将 CSV 文本转换为 PowerShell 对象,并将其存储在 $array 变量中。

执行后,我们可以看到 CSV 文件值已转为名为 ArrayList 对象的格式列表。

输出:

在 PowerShell 中将 CSV 文件读入数组 - 输出 6

结论

在 PowerShell 脚本中,无缝处理 CSV 数据对于有效的自动化和数据处理至关重要。通过利用 Import-CSVGet-Content cmdlets 或使用 System.IO.File 类和 ConvertFrom-Csv cmdlet,用户可以高效地将 CSV 文件读取进数组,从而轻松灵活地操作数据。

无论是从大型数据集中提取见解还是自动化重复任务,这些方法为 PowerShell 开发人员提供了强大的工具。通过对这些技术的清晰理解,用户可以在其脚本中利用 CSV 数据的力量,从而简化工作流程并提高生产力。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相关文章 - PowerShell Array

相关文章 - PowerShell CSV