Как я могу сохранить данные из файла CSV в локальные переменные для скрипта Powershell? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь прочитать 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)
}

Возвращает мне пустые массивы. Как это исправить?

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Используя ваш подход буквально, вы можете использовать Новая переменная , Получить переменную

## Q:\Test\2019\04\24\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
0 голосов
/ 24 апреля 2019

Ваш цикл ничего не возвращает, потому что вы не сохраняете и не даете никакого результата.Вот как это должно быть сделано:

$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

...