Значения ConvertFrom-StringData хранятся в переменной - PullRequest
0 голосов
/ 27 апреля 2020

Я новичок в Powershell и собираю скрипт, который будет заполнять все переменные из данных, хранящихся в файле Excel. В основном для создания многочисленных виртуальных машин.

Это прекрасно работает, за исключением того, что у меня есть переменная с несколькими парами имя / значение, которой powershell должен быть хеш-таблица.

Поскольку каждая виртуальная машина будет нуждаться в применении нескольких тегов У меня есть столбец в Excel под названием Теги. Данные в поле будут выглядеть примерно так: «Top = Red` n Bottom = Blue ».

Я пытаюсь использовать ConvertFrom-StringData для создания хеш-таблицы для этих тегов. Если я запускаю:

ConvertFrom-StringData $ exceldata.Tags

Я получаю что-то вроде:

Имя Значение ---- ----- Top Red ` n bottom = blue

Мне нужна помощь, пожалуйста, с правильным форматированием поля Excel, чтобы ConvertFrom-StringData правильно создавала хеш-таблицу. Или лучший способ добиться этого.

Спасибо.

1 Ответ

0 голосов
/ 27 апреля 2020

Сортировал, отформатировал поле Excel следующим образом: Dept = it; env = prod; owner = Me

Затем выполнил следующие команды. ConvertFrom-StringData не требуется.

$artifacts = Import-Excel -Path "C:\temp\Artifacts.xlsx" -WorkSheetname "VM"
foreach ($artifact in $artifacts) { 
$inputkeyvalues = $artifact.Tags
# Create hashtable
$tags = @{}
# Split input string into pairs
$inputkeyvalues.Split(';') |ForEach-Object {
# Split each pair into key and value
$key,$value = $_.Split('=')
# Populate $tags
$tags[$key] = $value
}
}
...