OneNote and XML–finding sections

I recently showed how to find the names of your OneNote notebooks.  The next level down is the section.  You can find these sections in a notebook like this:


$onenote = New-Object -ComObject OneNote.Application
$scope = [Microsoft.Office.Interop.OneNote.HierarchyScope]::hsPages
[ref]$xml = ”


$onenote.GetHierarchy($null, $scope, $xml)


$schema = @{one=””}


$xpath = “//one:Notebook/one:Section”
Select-Xml -Xml ([xml]$xml.Value) -Namespace $schema -XPath $xpath |
foreach {
$node = $psitem.Node

$npath = Split-Path -Path $node.Path -Parent
$props = [ordered]@{
   Workbook =  Split-Path -Path $npath -Leaf
   Section = $node.Name
New-Object -TypeName PSObject -Property $props


The first part of the script where the application object is created, the scope set and you get the hierarchy is the same as before.  The two scripts diverge when you get to the Xpath you’re going to use.  To find the notebooks you used:


$xpath = “//one:Notebook”


which means get me any Nodes called one:Notebook


To find the section you use:


$xpath = “//one:Notebook/one:Section”


which means any nodes called one;Section that are children of a one:Notebook node.


Remember XML is case sensitive.


Once you have the section nodes – which look like this:


name             : Quick Notes
ID               : {9EFAE9AC-0388-424A-8211-02E8FFE50666}{1}{B0}
path             : (Web)/Quick
lastModifiedTime : 2014-09-04T17:48:07.000Z
color            : #B7C997
Page             : {OneNote: one place for all of your notes, OneNote Basics}


You can extract the data you want. The path property can be used to extract the name of the note book with a little bit of Split-Path magic.


Next time you’ll see how to get down to the individual pages

This entry was posted in Office 2013, Powershell. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s