Как сделать запрос из списка в скрипте powershell - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть этот ответ в формате json:

{
    "properties": {
        "basic": {
            "nodes_table": [
                {
                    "node": "node1.prod.local:80",
                    "state": "active",
                    "weight": 1
                },
                {
                    "node": "node2.prod.local:80",
                    "state": "disabled",
                    "weight": 1
                },
                {
                    "node": "node3.prod.local:80",
                    "state": "disabled",
                    "weight": 1
                },
                {
                    "node": "node4.prod.local:80",
                    "state": "disabled",
                    "weight": 1
                },
                {
                    "node": "node5.prod.local:80",
                    "state": "active",
                    "weight": 1
                }
            ]
        }
    }
}

Что я пытаюсь сделать в своем скрипте powershell, это выяснить, доступны ли данные узлы в таблице node_table, и получить их состояние. Например:

$nodes_table_hostnames = $GetNodesResponse.properties.basic.nodes_table.node
$nodes_table_status = $GetNodesResponse.properties.basic.nodes_table.state

if($nodes_table_hostnames -contains "node1.prod.local:80" -and $nodes_table_status -eq "active")
    {
        Write-Output  "Node matches and is Active"
    }

Проблема: У меня проблема с получением состояния «определенного» узла, поэтому я хочу проверить, находится ли «данный» узел в таблице и состояние этого узла активно / отключено. Как бы я сделал это в сценарии?

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Для проверки нескольких строк используйте оператор -in

Where {$_.Node -in "node1.prod.local:80", "node5.prod.local:80" -and $_.state -eq "active"}

или вы можете использовать операторы -like или -match для сопоставления с шаблоном, как в:

Where {$_.Node -like "node[15].prod.local:80" -and $_.state -eq "active"}
0 голосов
/ 30 апреля 2018
$Active = $GetNodesResponse.properties.basic.nodes_table |
            Where {$_.Node -eq "node1.prod.local:80" -and $_.state -eq "active"}
If ($Active) {Write-Output  "Node matches and is Active"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...