PowershellでLotusScriptを利用する
VBScriptのときと同じように、COMでLotusScriptの各種クラスを呼ぶことが可能です。
Powershellの強力なコマンドレットを扱えるため、書き方を覚えればこちらのほうが便利です。
個人的にはログの吐き出しがリダイレクトで簡単になるのが楽でよいです。
一方で、LotusScriptの書き方とシェルの書き方が混在するので、木に竹を接いだようになるのが見た目あまりよくないですが…。
$ss = new-object -comobject Lotus.NotesSession
$ss.Initialize("")
Write-Output "Hello world!" $ss.CommonUserName
pause
PS C:\HelloWorld.ps1
Hello world!
Yamada Taroh
Press Enter to continue...:
注意点としては、Windowsが64bitの場合以下のようなエラーが出ることがあります。
dllが32bitのためこのエラーが出るため、32bit版Powershellを使ってください。
64bit版と32bit版では初期ディレクトリが異なるので、そこも注意してください。
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell_ise.exe
PS C:\> .\HelloWorld.ps1
new-object : CLSID {29131539-2EED-1069-BF5D-00DD011186B7} を含むコンポーネントの COM クラス ファクトリを取得中に、次の
エラーが発生しました: 80040154 クラスが登録されていません (HRESULT からの例外:0x80040154 (REGDB_E_CLASSNOTREG))。
At C:\HelloWorld.ps1:1 char:7
+ $ss = new-object -comobject Lotus.NotesSession
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (:) [New-Object], COMException
+ FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand
You cannot call a method on a null-valued expression.
At C:HelloWorld.ps1:2 char:1
+ $ss.Initialize("")
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Hello world!
Press Enter to continue...:
おまけ(他言語からLotusScriptを呼ぶパターン)
Pythonからも呼ぶことができます。
addicted: Python から COM 経由で Lotus Notes にアクセス
参考
Powershell for Lotus Notes and Domino… | Messaging, Collaboration & Identity ※分かりやすいサンプルあり
PowerShellでアンマネージドdllを使おうとしたらハマった話 | $m0t0k1x2["code"].content ※Windowsが64bitなのにdllは32bitなので引っかかった例