Как получить доступ к содержимому страницы OneNote? - PullRequest
0 голосов
/ 05 декабря 2018

Я новичок в powershell, и я зашел так далеко, ища примеры кода в Интернете, однако я не могу найти ни одного примера, который показал бы мне, как получить реальное содержимое страницы OneNote с помощью Powershell.

$OneNote = New-Object -ComObject OneNote.Application
[xml]$Hierarchy = ""
$OneNote.GetHierarchy("", 
[Microsoft.Office.InterOp.OneNote.HierarchyScope]::hsPages, [ref]$Hierarchy)

foreach ($notebook in $Hierarchy.Notebooks.Notebook ) {
    $notebook.Name
    "=============="
    foreach ($section in $notebook.Section) {
    "# TAB: " + $section.Name
        foreach ($page in $section.page) {
            "   " + $page.Name
            #$page.GetAttribute.ToString()
            #$page.Attributes
            #$page.InnerText
            # How do I get to the contents of the page?
        }
    }
    " "
}

1 Ответ

0 голосов
/ 05 декабря 2018

Вы почти у цели.Видя, что содержимое OneNote находится в пределах XMLElement.вам нужно будет использовать Select-Xml для получения информации.

Ниже приведен пример получения свойства Page для XMLElement:

$OneNote = New-Object -ComObject OneNote.Application
$schema = @{one=”http://schemas.microsoft.com/office/onenote/2013/onenote”}
[xml]$Hierarchy = ""
$OneNote.GetHierarchy("", 
[Microsoft.Office.InterOp.OneNote.HierarchyScope]::hsPages, [ref]$Hierarchy)

foreach ($notebook in $Hierarchy.Notebooks.Notebook ) {
    $notebook.Name
    "=============="
    foreach ($section in $notebook.Section) {    
        foreach ($page in $section.page) {
            "   " + $page
            foreach($xml in $page)
            {
               Select-Xml -xml($xml.Value) -Namespace $schema -Xpath "//one:Notebook/one:Section" |foreach{
                $node = $psitem.node
                $npath = Split-Path -Path $node.Path -Parent
                #This is where all the magic happens
                $props = [ordered]@{
                    Workbook= Split-Path -Path $npath -Leaf
                    Section = $node.name
                    Child = $node.ChildNodes
                    Page = $node.Page #This is your page content
                }
                New-Object -TypeName PSObject -Property $props
               }


            }            
        }
    }

}
...