Help us understand the problem. What is going on with this article?

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...:

おまけ(他言語から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なので引っかかった例

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away