Регулярное выражение Powershell для замены и возврата только значений в строке

у меня есть строка

$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

кажется, не работает

вроде ты хотел $vardata -replace '-var[^=]*=', непонятно с какой целью [regex]::Matches там

Santiago Squarzon 04.05.2024 01:53

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

wehelpdox 04.05.2024 01:54

@Daniel Привет, спасибо за ответ, возможно, я не совсем ясно выразился выше, но назначения и их имена являются динамическими, они не всегда могут быть одинаковыми.

wehelpdox 04.05.2024 02:39

Верно. В этом есть смысл :)

Daniel 04.05.2024 03:02
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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 = @{}  # 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

Спасибо Дэниел и Тео.

wehelpdox 05.05.2024 18:06

Другие вопросы по теме

Сбой конвейера Azure Devops из-за обновления модуля AZ.Accounts от MSFT
PowerShell — проверьте, является ли установленный драйвер последней версией, доступной в каталоге Центра обновления Windows
Сценарий Powershell выдает ошибку (класс 80040154 не зарегистрирован) только тогда, когда он выполняется из кода развертывания. Почему?
Записывать данные только в строку csv, не теряя предыдущие данные?
Использование PowerShell для удаления расширения файла
Powershell — скопируйте часть регулярного выражения под строку, где оно было найдено
Как обновить значение параметра при успешном выполнении конвейера Azure в другом проекте
Ошибка при запуске dir/p в терминале VSCode – эквивалент dir/p в PowerShell?
Как заполнить входные данные PowerShell сценарием Python?
Можно ли получить сообщения электронной почты, отправленные нескольким конкретным получателям внутри отправленных элементов, используя API Microsoft Graph с PowerShell?