【PowerShell】Notes 文書を CSV ファイルにエクスポートする
9582 ワード
概要
VBA のサンプルはたくさんあるので、PowerShell(Ver5.1) で書いてみました。
前提
LotusScript は 32bit版 PowerShell でしか動作しません。
ソース
Export-Csv.ps1
using namespace System.IO;
# [32bit版 PowerShell](C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe) でしか使えません。
Param (
# Notes DB ファイルパス
[Parameter(Mandatory, ValueFromPipeline, Position=0)]
[FileInfo] $Path
) Begin {
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop
# Notes を設定するセッション接続
$Notes = New-Object -ComObject Lotus.NotesSession
$Notes.Initialize('')
} Process {
$db = $Notes.GetDatabase('', $Path, $false)
$Title = $db.Title
$Documents = $db.AllDocuments
$doc = $Documents.GetFirstDocument()
$rows = if ($doc) {
do {
$row = @{}
$doc.Items | % {
if (![string]::IsNullOrEmpty($_.Name)) {
$row.Add($_.Name, $_.Text)
}
}
[PSCustomObject]$row
$doc = $Documents.GetNextDocument($doc)
} while ($doc)
}
if ($rows) {
pushd $Path.DirectoryName
$rows | Export-Csv -NoTypeInformation "$Title.csv" -Encoding UTF8
popd
}
} End {
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Continue
}
使い方
Export-Csv.ps1
using namespace System.IO;
# [32bit版 PowerShell](C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe) でしか使えません。
Param (
# Notes DB ファイルパス
[Parameter(Mandatory, ValueFromPipeline, Position=0)]
[FileInfo] $Path
) Begin {
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop
# Notes を設定するセッション接続
$Notes = New-Object -ComObject Lotus.NotesSession
$Notes.Initialize('')
} Process {
$db = $Notes.GetDatabase('', $Path, $false)
$Title = $db.Title
$Documents = $db.AllDocuments
$doc = $Documents.GetFirstDocument()
$rows = if ($doc) {
do {
$row = @{}
$doc.Items | % {
if (![string]::IsNullOrEmpty($_.Name)) {
$row.Add($_.Name, $_.Text)
}
}
[PSCustomObject]$row
$doc = $Documents.GetNextDocument($doc)
} while ($doc)
}
if ($rows) {
pushd $Path.DirectoryName
$rows | Export-Csv -NoTypeInformation "$Title.csv" -Encoding UTF8
popd
}
} End {
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Continue
}
Notes 文書ファイル(.nsf) をパイプラインで渡せます。
dir C:\NotesDb -File -Recurse -Include *.nsf | .\Export-Csv.ps1
参考サイト
Author And Source
この問題について(【PowerShell】Notes 文書を CSV ファイルにエクスポートする), 我々は、より多くの情報をここで見つけました https://qiita.com/MakotoIshikawa/items/bb69070a4c6d3995778c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .