Извлечение каждого объекта из файла CSV с использованием powershell - PullRequest
0 голосов
/ 14 июня 2019

Я новичок в Powershell. У меня есть CSV-файл с именем samplemap.csv со значениями. Я должен прочитать каждое значение из файла, как пример переменной, чтобы определить значение paris_App.

CntryApp Version
paris_App 2.19
ila_App 5.3
sga_App 3.10

Код, который я использовал, печатает всю версию CntryApp, а не печатает каждую версию CntryApp отдельно

Import-CSV "H:\samplemap.csv"
$CntryApp = @()
$Version = @()
 Import-CSV "H:\samplemap.csv" -Delimiter ';'
ForEach-Object {
        $CntryApp += $_.CntryApp
        $Version += $_.Version
}

Ожидается, что 2.19,5.3,3.10 будет присвоен индивидуальной переменной. Я имею в виду, что каждая версия CntryApp назначается переменной.

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Если я вас правильно понимаю, вам нужны отдельные переменные для каждой записи во входном файле, например $paris_App? Хотя это возможно, используя что-то вроде Set-Variable, лучшим подходом было бы создание хеш-таблицы этих пар ключ-значение. Это вы могли назвать версию, если знаете имя.

$apps = @{}
Import-CSV "H:\samplemap.csv" -Delimiter ';' | ForEach-Object{
    $apps[$_.CntryApp] = $_.Version
}

$apps['sga_app']

Этот подход потерпит неудачу, если эти CntryApp содержат дубликаты.

0 голосов
/ 14 июня 2019

Чтобы импортировать данные из файла .csv (в данном случае разделенного пробелами), вы должны указать разделитель (если он не совпадает с разделителем по умолчанию, который может зависеть от ваших региональных настроек, и я уверен, что пространство не по умолчанию).

Если вы хотите использовать эти данные позже, хорошо сохранить импортированные значения в переменную:

$t = Import-CSV "$($pwd.path)\samplemap.csv" -Delimiter ' '

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

# All values of CntryApp
$t.CntryApp

# Output
paris_App
ila_App
sga_App

# CntryApp and version of first object
$t[0]

# Output
CntryApp  Version
--------  -------
paris_App 2.19

# Version of first app
$t[0].Version

# Output 
2.19

Как вы упомянули сценарий key: value, было бы естественно (хотя это могло бы выглядеть немного сложнее) рассматривать hastable, поскольку @ Мэтт предложил .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...