如何将CSV文件中的数据存储到Powershell脚本的本地变量中?

如何将CSV文件中的数据存储到Powershell脚本的本地变量中?,powershell,csv,powershell-3.0,Powershell,Csv,Powershell 3.0,我正在尝试读取一个csv文件,并将其数据存储到我将用于Powershell脚本的变量中。 我通过执行以下命令来读取文件: $csv = Import-Csv C:\Users\[...]\Documents\ipaddresses.csv -delimiter "|" $csv 输出如下所示: IP Name -- ---- 165.XX.XX.1 n1 165.XX.XX.2 n2 165.XX.XX.3 n3 165.XX.XX.4 n4 165.XX

我正在尝试读取一个csv文件,并将其数据存储到我将用于Powershell脚本的变量中。 我通过执行以下命令来读取文件:

$csv = Import-Csv C:\Users\[...]\Documents\ipaddresses.csv -delimiter "|" 
$csv
输出如下所示:

IP          Name
--          ----
165.XX.XX.1 n1
165.XX.XX.2 n2
165.XX.XX.3 n3
165.XX.XX.4 n4
165.XX.XX.5 n5
165.XX.XX.6 n6
foreach($item in $csv){
    IP = $($item.IP) 
    Name = $($item.Name)
}
我的想法是,我可以创建6个变量,每个变量如下:

$Name = $IP
但是,当我尝试循环$csv变量的对象并将其存储到如下数组中时:

IP          Name
--          ----
165.XX.XX.1 n1
165.XX.XX.2 n2
165.XX.XX.3 n3
165.XX.XX.4 n4
165.XX.XX.5 n5
165.XX.XX.6 n6
foreach($item in $csv){
    IP = $($item.IP) 
    Name = $($item.Name)
}

它返回空数组。我该如何解决这个问题

您的循环没有返回任何内容,因为您没有存储或生成任何结果。以下是应该如何做到这一点:

$csv=导入csv C:\Users\[…]\Documents\ipaddresses.csv-分隔符| $csv |选择对象-属性IP、名称 或者如果您想要自定义属性 $csv |选择对象-属性IP,@{Name=Custom Name,Expression={Hostname is:+$\u.Name}
阅读有关选择对象的更多信息:

采用您的方法文字,您可以使用


在本例中,变量分配的语法不正确。变量的名称前面有$引用。因此,至少必须有$IP=$line.IP和$Name=$line.Name。即使语法正确,本例中的变量在循环的每次迭代中都会被覆盖。这意味着依赖于它们上的ds需要在该循环内发生。我不会使用$item作为变量名,因为我不确定在某些情况下是否会与保留/自动变量发生冲突。$csv已经包含了您可能需要的所有信息。如果您需要在整个代码中,特别是在循环之外,保持对数据的访问,您可以索引为$csv[3]或$csv[2]的参考特定行.IP。您还可以访问整个数组$csv.Name或$csv.IP的属性。此外,变量赋值通常会抑制成功流输出。因此,您需要通过键入变量名$IP或$Name而不进行赋值来显式请求赋值。@键入$csv[2]时的AdminOfThings我确实返回了索引2的行。但是,当我键入$csv[2].IP,甚至只是$csv.IP,都不会返回任何内容。我相信这是问题的根源。在导入csv后是否仍在操作$csv?如果所有数据(包括标题)都没有真正用|分隔,则使用-Delimiter |将导致出现这种情况。如果csv文件中有逗号而不是|,请不要使用-Delimiter。该switch告诉PowerShell您的数据是如何被分离的,而不是您希望在导入数据后如何分离。我找到了它不起作用的原因!即使我的csv的标题是大写的,但如果我没有使用大写,它只会返回我想要的输出。这意味着如果我键入$csv.ip而不是$csv.ip。真不敢相信这是一个小细节长哈哈。谢谢你的输出!
Name                           Value
----                           -----
n1                             165.XX.XX.1
n2                             165.XX.XX.2
n3                             165.XX.XX.3
n4                             165.XX.XX.4
n5                             165.XX.XX.5
n6                             165.XX.XX.6