PowerShell
LotusScript
LotusNotes
IBMNotes

PowershellでLotusScriptを利用する

PowershellでLotusScriptを利用する

 VBScriptのときと同じように、COMでLotusScriptの各種クラスを呼ぶことが可能です。
 Powershellの強力なコマンドレットを扱えるため、書き方を覚えればこちらのほうが便利です。
 個人的にはログの吐き出しがリダイレクトで簡単になるのが楽でよいです。
 一方で、LotusScriptの書き方とシェルの書き方が混在するので、木に竹を接いだようになるのが見た目あまりよくないですが…。

HelloWorld的例
$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版では初期ディレクトリが異なるので、そこも注意してください。

32bit版Powershellの場所
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell_ise.exe
64bit版でNotesSessionを呼んだ例
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...:

参考

Powershell for Lotus Notes and Domino… | Messaging, Collaboration & Identity ※分かりやすいサンプルあり
PowerShellでアンマネージドdllを使おうとしたらハマった話 | $m0t0k1x2["code"].content ※Windowsが64bitなのにdllは32bitなので引っかかった例