私は、JavaScriptとActiveXを使用してIEからのEntryIDによってパブリックフォルダーを開く自動化に取り組んでおり、いくつかのエラーが発生しました。デバッグするために、PowerShellスクリプトとして書き直しました。
$eid = "HEX EntryID FOR PUBLIC FOLDER";
$o = new-object -com outlook.application;
$ns = $o.GetNamespace("MAPI");
#$ns #if this line is commented, error
$f = $ns.GetFolderFromID($eid)
$f.Display();
Outlookを完全にシャットダウンしてからスクリプトを実行すると、次のエラーが発生します
Exception calling "GetFolderFromID" with "2" argument(s): "The messaging interface has returned an unknown error. If the problem persists, restart Outlook."
At G:\scripts\outlook.ps1:5 char:25
+ $f = $ns.GetFolderFromID <<<< ($eid)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
$ ns行のコメントを外すと、再度削除してもすべて正常に機能します。つまり、Outlookを完全に閉じるまでは、コンソールに出力するまで$nscomオブジェクトが実際に初期化されていないかのように見えます。
知りたいのですが:
- 電話
$ns
で問題が解決する理由 - PowerShellが2つの引数を渡していると考える理由
- この回避策をjavascriptで実装する方法はありますか