у меня есть строка
$vardata = " -var subscription_id=SUBSCRIPTION_ID -var tenant_id=TENANT_ID -var kt_subscription_id=KT_SUBSCRIPTION_ID -var ecr_subscription_id=ECR_SUBSCRIPTION_ID "
Я хочу заменить все от «-var до =" и получить только такие значения, как
SUBSCRIPTION_ID
TENANT_ID
KT_SUBSCRIPTION_ID
ECR_SUBSCRIPTION_ID
iterate through the values to generate a token from keyvault and replace the values in the string with their tokens
и т. д.
Я пытался
$kv = [regex]::Matches($vardata-replace '-var*[^=]').Value
кажется, не работает
Я хотел перебрать отдельные выходные значения и получить секреты из хранилища ключей.
@Daniel Привет, спасибо за ответ, возможно, я не совсем ясно выразился выше, но назначения и их имена являются динамическими, они не всегда могут быть одинаковыми.
Верно. В этом есть смысл :)
Я думаю, что было бы лучше не получать просто массив значений, не зная, к какой переменной он принадлежит, а хранить информацию об имени и значении вместе в хэш-таблице
В этом случае регулярное выражение для разделения строки на кан будет простым:
$vardata = " -var subscription_id=SUBSCRIPTION_ID -var tenant_id=TENANT_ID -var kt_subscription_id=KT_SUBSCRIPTION_ID -var ecr_subscription_id=ECR_SUBSCRIPTION_ID "
$result = @{} # use [Ordered]@{} if you want to retain the order of the parameters
$vardata -split '\s*-var\s*' -ne '' | ForEach-Object {
$name, $value = ($_ -split '=').Trim()
$result[$name] = $value
}
# show the result
$result
to get an array of just the values from this Hashtable use $result.Values
Выход:
Name Value
---- -----
subscription_id SUBSCRIPTION_ID
tenant_id TENANT_ID
ecr_subscription_id ECR_SUBSCRIPTION_ID
kt_subscription_id KT_SUBSCRIPTION_ID
# you can also cast the Hashtable into a PsCustomObject if you prefer:
[PsCustomObject]$result | Format-List
Выход:
subscription_id : SUBSCRIPTION_ID
tenant_id : TENANT_ID
ecr_subscription_id : ECR_SUBSCRIPTION_ID
kt_subscription_id : KT_SUBSCRIPTION_ID
Спасибо Дэниел и Тео.
вроде ты хотел
$vardata -replace '-var[^=]*='
, непонятно с какой целью[regex]::Matches
там