L oop через отдельные идентификаторы в Powershell - PullRequest
0 голосов
/ 30 апреля 2020

Я запускаю следующую команду в AWS:

$ aws ec2 describe-images \
    --owners self \
    --query 'reverse(sort_by(Images,&CreationDate))[:5].{id:ImageId,date:CreationDate}'
[
    {
        "id": "ami-0a1b2c3d4e5f60001",
        "date": "2018-11-28T17:16:38.000Z"
    },
    {
        "id": "ami-0a1b2c3d4e5f60002",
        "date": "2018-09-15T13:51:22.000Z"
    },
    {
        "id": "ami-0a1b2c3d4e5f60003",
        "date": "2018-08-19T10:22:45.000Z"
    },
    {
        "id": "ami-0a1b2c3d4e5f60004",
        "date": "2018-05-03T12:04:02.000Z"
    },
    {
        "id": "ami-0a1b2c3d4e5f60005",
        "date": "2017-12-13T17:16:38.000Z"
    }

]

Я хотел бы использовать foreach l oop для каждого отдельного идентификатора. Я попытался сделать это с выводом текста, однако foreach l oop будет захватывать только первый идентификатор. Я новичок в программировании и не знаю, как мне сделать эту работу. Я ограничен Powershell.

1 Ответ

0 голосов
/ 30 апреля 2020

Если вы записываете этот вывод в формате JSON в переменную, скажем, $json, вы можете выполнить следующие действия для перебора отдельных свойств id:

# convert the JSON text to an array of PSObjects and loop through
($json | ConvertFrom-Json) | ForEach-Object {
    # do something using the items id property
    "Found ID: $($_.id)"
}

Или, если вам нравится делать это немного по-другому, вы можете использовать

$allItems = $json | ConvertFrom-Json
foreach ($item in $allItems) {
    # do something using the items id property
    "Found ID: $($item.id)"
}

Конструкция $() необходима для того, чтобы PowerShell расширял значение $item.id в строку. Вы можете получить ту же строку вывода, выполнив "Found ID: {0}" -f $item.id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...