배경 : 제 작업 환경에서는 지식 기반 메모를위한 전환 위치가 있습니다. 이들은 수년 동안 유지 관리되어 온 여러 OneNote 2016 통합 문서에 있습니다. 현재 콘텐츠 업데이트 작업을 직원에게 위임하는 중이며이 작업의 일부는 계층 관리를 위해 모든 OneNote 전자 필기장 이름과 섹션 이름을 Excel 스프레드 시트로 가져 오는 작업입니다.
작업 : 저는 PowerShell을 사용하여 OneNote에서 csv로 계층 구조 정보를 쉽고 빠르게 내보낼 수있는 방법을 온라인에서 찾아 보았지만 평생 쉬운 방법을 찾지 못했습니다. 다음 코드는 인터 웹을 통해 울려 퍼졌지만 코드를 실행하려고 할 때마다 계속 오류가 발생했습니다.
$onenote = New-Object -ComObject OneNote.Application
$scope = [Microsoft.Office.Interop.OneNote.HierarchyScope]::hsPages
[ref]$xml = $null
$onenote.GetHierarchy($null, $scope, $xml)
$schema = @{one=”http://schemas.microsoft.com/office/onenote/2013/onenote”}
$xpath = “//one:Notebook/one:Section”
Select-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
}
오류 : 이 코드를 실행할 때 발생하는 오류는 다음과 같습니다.
"System.String"유형의 값을 "System.Xml.XmlNode"유형으로 설정합니다. 줄 : 10 char : 17 + Select-Xml -Xml (
솔루션 : 결국 Onenote 응용 프로그램과의 연결을 끊고 OneNote 2016에서 실행 가능한 솔루션을 찾아야했습니다. 솔루션을 제공했지만 향후이 데이터를 효과적으로 조작 할 수있는 다른 가능한 방법에 대해 듣고 싶습니다. :
Function Get-OneNoteHeaders{
[CmdletBinding()]
Param()
Begin
{
$onenote = New-Object -ComObject OneNote.Application
$scope = [Microsoft.Office.Interop.OneNote.HierarchyScope]::hsPages
[ref]$xml = $null
$csvOutput = "c:\temp\onenote-headers.csv"
}
Process
{
$onenote.GetHierarchy($null, $scope, $xml)
[xml]$result = ($xml.Value)
Foreach($notebook in $($result.DocumentElement.Notebook)){
Add-content -Path $csvOutput -Value "$($notebook.name)"
Foreach($section in $($notebook.section)){
Add-content -Path $csvOutput -Value ",$($section.name)"
Foreach($page in $section.page){
Add-content -Path $csvOutput -Value ",,$($page.name)"
}
}
}
}
End{}
}
#Get-OneNoteHeaders
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다