从 CSV 文件中读取并将行中的每个值保存在变量中

Read from CSV file and save every value in a row in a variable

我有这个 CSV 文件。看起来像这样:

ID,Name,Surname,Energy, Sugar
1,Kim,Jansen,4343,45
2,Tim,Brown,5332,42
3,Paul,Redford,2345,36

我的脚本中有一个 Read-Host 语句要求提供 ID。一旦我有了这个 - 假设它是 2 - 我现在想导入这个 CSV 文件并读取 ID=2 的行并将姓名、姓氏、能量和糖保存在变量中。

我试过 ForEach-Object 等,但它打印了所有 ID 列并仅保存最后一行。

如何仅在 if 条件为真时获取行值?

只需使用 Where-Object 过滤器:

$id = Read-Host ...
$row = Import-Csv 'input.csv' | Where-Object { $_.Id -eq $id }

您可以将 CSV 的字段存储在单独的变量中:

$name    = $row.Name
$surname = $row.Surname
$energy  = $row.Energy
$sugar   = $row.Sugar

但这通常既不需要也不推荐。只需使用对象变量的属性(本例中为 $row)。