Я работаю с автоматизацией открытия общей папки EntryID из IE с помощью javascript и activex и пробегает некоторые ошибки. Чтобы отлаживать, я переписал его как сценарий командной оболочки.powershell outlook automation namespace
$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();
Если я закрываю взгляд вниз полностью, а затем запустить сценарий, я получаю следующую ошибку
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
Если я раскомментировать строку $ нс, все работает отлично, даже если его снова удалены. То есть, пока я полностью не закрываю Outlook, почти как если бы объект $ ns com не был инициализирован до тех пор, пока я не вывешу его на консоль.
Я хотел бы знать:
- почему вызова
$ns
исправляет проблему - почему думает PowerShell я передаю 2 аргумента
- есть способ реализации этого метода обхода в JavaScript
GetFolderFromID() требует только один аргумент. Второй аргумент Store ID не является обязательным. http://msdn.microsoft.com/en-us/library/bb219901(v=office.12).aspx – Pete
@Pete Хорошо, я не читал msdn, просто посмотрел на OverloadDefinitions метода. Хорошо знать! –