我有一根绳子
$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
租户_ID
KT_SUBSCRIPTION_ID
ECR_SUBSCRIPTION_ID 并迭代这些值以从 keyvault 生成令牌
等等
我试过了
$kv = [regex]::Matches($vardata-replace '-var*[^=]').Value
似乎不起作用
您可以执行 2 种匹配:1 种定位所有键值对,然后另一种分析它们并将它们填充到哈希表中
$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 = [regex]::Matches($vardata, '(?<=-var\s+)[\w=]*')
if ($result) {
$output = [ordered]@{}
$result | ForEach-Object {
if ($_.Value -match '(?<key>\w+)=(?<value>\w+)') {
$output.Add($Matches.key, $Matches.value)
}
}
$output
}
输出
Name Value
---- -----
subscription_id SUBSCRIPTION_ID
tenant_id TENANT_ID
kt_subscription_id KT_SUBSCRIPTION_ID
ecr_subscription_id ECR_SUBSCRIPTION_ID