如何将 CSV 文件中的数据存储到 Powershell 脚本的局部变量中?
How can I store data from a CSV file into local variables for a Powershell script?
我正在尝试读取一个 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
我的想法是我可以创建 6 个变量,例如:
$Name = $IP
但是,当我尝试循环 $csv 变量的对象并将它们存储到这样的数组中时:
foreach($item in $csv){
IP = $($item.IP)
Name = $($item.Name)
}
它returns 我是空数组。我该如何解决?
您的循环没有返回任何内容,因为您没有存储或产生任何结果。这是应该如何完成的:
$csv = Import-Csv C:\Users\[...]\Documents\ipaddresses.csv -delimiter "|"
$csv | Select-Object -Property IP,Name
# Or if you want a custom property
$csv | Select-Object -Property IP, @{Name="Custom Name", Expression = {"Hostname is : " + $_.Name}
阅读更多关于 Select-Object
的信息:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-object?view=powershell-3.0
从字面上看,您可以使用 New-Variable, Get-Variable
## Q:\Test19\SO_55830910.ps1
$csv = Import-Csv $Env:USERPROFILE\Documents\ipaddresses.csv -delimiter "|"
foreach($item in $csv){
"{0} = {1}" -f $item.Name,$item.IP
New-Variable -Name $item.Name -Value $item.IP
}
1..6|%{Get-Variable "n$_"}
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
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
我正在尝试读取一个 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
我的想法是我可以创建 6 个变量,例如:
$Name = $IP
但是,当我尝试循环 $csv 变量的对象并将它们存储到这样的数组中时:
foreach($item in $csv){
IP = $($item.IP)
Name = $($item.Name)
}
它returns 我是空数组。我该如何解决?
您的循环没有返回任何内容,因为您没有存储或产生任何结果。这是应该如何完成的:
$csv = Import-Csv C:\Users\[...]\Documents\ipaddresses.csv -delimiter "|"
$csv | Select-Object -Property IP,Name
# Or if you want a custom property
$csv | Select-Object -Property IP, @{Name="Custom Name", Expression = {"Hostname is : " + $_.Name}
阅读更多关于 Select-Object
的信息:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-object?view=powershell-3.0
从字面上看,您可以使用 New-Variable, Get-Variable
## Q:\Test19\SO_55830910.ps1
$csv = Import-Csv $Env:USERPROFILE\Documents\ipaddresses.csv -delimiter "|"
foreach($item in $csv){
"{0} = {1}" -f $item.Name,$item.IP
New-Variable -Name $item.Name -Value $item.IP
}
1..6|%{Get-Variable "n$_"}
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
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