Доступ к вложенным объектам в PowerShell - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь извлечь конкретные значения из объекта PowerShell, чтобы создать CSV для использования в другом приложении.Более конкретно, я использовал Microsoft Graph API для загрузки событий в календаре в течение установленного периода времени.

Я использовал эту команду в PowerShell для получения исходных данных

$data = Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/users/{username}/calendar/events?startDateTime=2019-01-01T00:00:00.0000000&endDateTime=2019-01-30T23:59:00.0000000&select=subject,start,end,IsAllDay,ResponseStatus"

ОтсюдаЯ могу получить доступ к каждому элементу в переменной $data, чтобы получить хороший список событий.

$data |
    ForEach-Object {$_.value} |
    Select -Property subject, start, end, IsAllDay, ResponseStatus

Вывод:

subject        : Event today
start          : @{dateTime=2019-01-18T11:00:00.0000000; timeZone=GMT Standard Time}
end            : @{dateTime=2019-01-18T11:30:00.0000000; timeZone=GMT Standard Time}
isAllDay       : False
responseStatus : @{response=none; time=0001-01-01T00:00:00Z}

subject        : Event tomorrow
start          : @{dateTime=2019-01-18T09:45:00.0000000; timeZone=GMT Standard Time}
end            : @{dateTime=2019-01-18T12:15:00.0000000; timeZone=GMT Standard Time}
isAllDay       : False
responseStatus : @{response=none; time=0001-01-01T00:00:00Z}

Я хотел бы выбрать dateTimeданные в start и end объектах, так что это выглядит так:

subject        : Event today
start          : 2019-01-18T11:00:00.0000000
end            : 2019-01-18T11:30:00.0000000
isAllDay       : False
responseStatus : @{response=none; time=0001-01-01T00:00:00Z}

subject        : Event tomorrow
start          : 2019-01-18T09:45:00.0000000
end            : 2019-01-18T12:15:00.0000000
isAllDay       : False
responseStatus : @{response=none; time=0001-01-01T00:00:00Z}

Я могу сделать это в окне PowerShell с помощью команды

$data.value.[0].start.dateTime

, но как я могу это сделатьэто с помощью команды выбора выше?

1 Ответ

0 голосов
/ 23 января 2019

Использовать вычисленные свойства для расширения свойств вложенных объектов:

$data |
    Select-Object -Expand value |
    Select-Object subject, @{n='start';e={$_.start.dateTime}},
        @{n='end';e={$_.end.dateTime}}, IsAllDay, ResponseStatus
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...