Powershell:对象中的对象 - 提取 属性 值(并导出为 CSV)- OneNoteUtilitiesGraph

Powershell : Object within Object - extract Property values (and export to CSV) - OneNoteUtilitiesGraph

对 PowerShell 还是相当陌生,并试图在给定的分区和笔记本中获取我所有 OneNote 页面的列表...并转换为 CSV。我快到了,但最后一点还没有完成。我已经尝试了一些事情:

我正在使用 https://github.com/wightsci/OneNoteUtilitiesGraph

# This my 'ffmpeg etc' Section. Get its Page(s) info:
$sPages = Get-MgUserOnenoteSectionPage -OnenoteSectionId "0-nnnn" -UserId "bbbb@yyyy.com"

# What do we have available to us?
$sPages | Get-Member

演出(子集):

Title                Property              string Title {get;set;}
CreatedDateTime      Property              System.Nullable[datetime] CreatedDateTime {get;set;}
ParentSection        Property              Microsoft.Graph.PowerShell.Models.IMicrosoftGraphOnenoteSection ParentSection {get;set;}

所以最后一个是对象中的对象??无论如何,随机挑选一些并检查一些值

$sPages[3].Title
Cut a video (lossless) with no re-encoding

$sPages[3].ParentSection.DisplayName
ffmpeg etc

但是

Foreach($s in $sPages) { $s | select Title, CreatedDateTime,ParentSection.DisplayName }

ParentSection.DisplayName没有价值:

Title                                                           CreatedDateTime        ParentSection.DisplayName
-----                                                           ---------------        -------------------------
Powershell (ffmpeg) to split media file by times.csv            28/10/2020 10:01:02 AM
Series of numbered images to a video                            6/04/2019 9:35:33 PM
Fuji camera - Timelapse (of cool change, clouds)                6/04/2019 9:36:27 PM

执行此操作的正确方法是什么,特别是如果我想最终将这 3 个 属性 值保存到 CSV 文件中?谢谢。

为此,您需要 calculated property 才能将 ParentSection 的显示名称作为同一对象的 属性

尝试:

foreach($s in $sPages) { 
    $s | Select-Object Title, CreatedDateTime,
                       @{Name = 'ParentSection'; Expression = { $_.ParentSection.DisplayName }}
}