Регулярные выражения на powershell - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь использовать регулярные выражения в PowerShell, но мне сложно решить этот вопрос.

У меня есть переменная

$appstatus = az webapp list --query "[].{state: state}"
$result = $appstatus -Match "Running"

Результат $ appstatus в JSON формате

[
  {
    "state": "Running"
  }
]

Как сохранить результат как «True» или «False»

Ответы [ 3 ]

3 голосов
/ 10 марта 2020

Вы должны преобразовать его в json вместо использования регулярных выражений. Никогда не применяйте собственный синтаксический анализ json. Вот способ сделать это:

$input = @'
[
  {
    "state" : "Running"
  }
]
'@
# Convert it to Json
$json = ConvertFrom-Json $input
# Check that the state member equals "Running"
$result = $json.state -eq "Running"
# Return the result
$result

Вам следует проверить, существует ли член state в $json.

2 голосов
/ 10 марта 2020

Если вы действительно хотите использовать регулярные выражения, вы можете попробовать это:

(?<="state":) ?"(\w*?)"

https://regex101.com/r/W25veP/3

Это будет захватывать значение состояния в первом захват группы.

Но я думаю, что должны быть некоторые конструкции, которые позволят вам разобрать JSON на выбранном вами языке. В большинстве случаев это будет лучшим выбором.

По сути, вы будете снимать «Бег». Я предполагаю, что вы хотите сопоставить его с «True».

0 голосов
/ 10 марта 2020

Чтобы решить мой вопрос, я использую команды ниже.

$azwebapp = az webapp list --query "[].{state: state}"
$appstatus = $azwebapp | ConvertFrom-Json
$result = $appstatus.state
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...