Если я понимаю вопрос, в вашем CSV-файле есть столбец с именем vmtags
. Значения в этом столбце являются строками в виде @{"R"="red";"B"="Blue"}
.
Командлет Get-AzResource
хочет получить объект Hashtable для своего параметра -Tags
. Я думаю, что вы взяли описание MS дает: пары ключ-значение в виде таблицы ha sh. Например: @ {key0 = "value0"; key1 = $ null; key2 = "value2"} здесь слишком буквально, и теперь вам нужно создать фактический объект Hashtable из его строкового представления .
Чтобы создать Hashtable из такой строки, вы можете использовать
# create a scriptblock using the string
$scriptBlock = [scriptblock]::Create('@{"R"="red";"B"="Blue"')
# execute it to create the hashtable
$tags = (& $scriptBlock)
$ tags теперь Hashtable, содержащий
Name Value
---- -----
R red
B Blue
Если вам нужно создать Hashtable из нескольких строк, сделайте что-то вроде
$vmtags = '@{"R"="red";"B"="Blue"}', '@{"G"="green";"A"="Alpha"}'
# first loop creates the hashtables from the individual strings
$arr = $vmtags | ForEach-Object {
$scriptBlock = [scriptblock]::Create($_)
& $scriptBlock
}
# the second loop merges all Hashtables in the array into one
$tags = @{}
$arr | ForEach-Object {
foreach ($key in $_.Keys) {
$tags[$key] = $_.$key
}
}
$ tags теперь является Hashtable, содержащим
Name Value
---- -----
R red
B Blue
A Alpha
G green