Прочитайте файл CSV, затем разделите значения и создайте глобальную переменную - PullRequest
1 голос
/ 23 июня 2019

Попытка прочитать файл с разделенными запятыми строками.Я хочу прочитать каждую строку и разбить на массив и создать глобальные переменные со значениями массива.

Содержимое файла:

server1,component1,service1
server2,BatchProcessor2,service2
server3,BatchProcessor3,service3

Я хочу создать глобальную переменную в виде пути к каталогу, напримерниже при чтении каждой строки.

$deployment.path = D:\server1\component1\service1
$deployment.path = D:\server2\component2\service2
$deployment.path = D:\server3\component3\service3

Но я получаю нулевые значения.

Код:

$fileIn  = 'D:\Test\build.properties.dev'
(Import-Csv -Path $filein -Delimiter ',' -Header 'ServerName','ComponentName','ServiceName' | ForEach-Object {
    $deployment.path = D:\$_.ServerName\$_.ComponentName\$_.ServiceName
    if (!(Test-Path $deployment.path)) {
        New-Item -ItemType Directory -Force -Path $deployment.path
    }
})

1 Ответ

2 голосов
/ 23 июня 2019

Сделайте так:

$csv = Import-Csv -Path 'D:\Test\build.properties.dev'

$csv | ForEach-Object {
    $path = "D:\$($_.servername)\$($_.componentname)\$($_.servicename)"
    if (!(Test-Path $path)) {
        New-Item -Itemtype Directory -Path $path -Confirm:$false -Force
    }
}

Если в вашем .csv нет заголовков, добавьте их.Если вы не можете, сделайте это программно.Вы можете использовать Tee-Object, например.Применяется тот же принцип, что и выше.

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