Powershell中的COM(MS Office)事件

时间:2019-01-14 13:32:32

标签: powershell events outlook com cdo

这个问题与我先前的问题密切相关:Handling COM event cancelation in VBScript

我想编写一个脚本,使用CDO通过我们公司的SMTP服务器发送电子邮件。

首先,我试图为此目的编写一个HTA应用程序,但是它变得很讨人喜欢,以使其足够舒适,以便其他人可以很好地处理它(由于正确的收件人解析)。

因此,现在我尝试使用常规的Outlook-Mail掩码先准备邮件,然后通过Powershell捕获send-item事件,以将其内容提供给我的CDO脚本。我之前通过VBScript尝试过(请参阅上面的链接),但这似乎无法按预期工作。

我对Powershell脚本还很陌生,但是在过去我已经可以使用VBScript中无法使用的功能,因此我希望通过它再次解决我的问题。现在,我的脚本如下所示:

=(ROW()-1)*6+COLUMNS($A:A)

我还没有达到我的期望,因为我根本不知道如何触发该事件。您可以在线上找到大量$WSH = new-Object -ComObject "WScript.Shell" $Outlook = new-Object -ComObject "Outlook.Application" $olMailItem = 0 register-objectevent -InputObject $Outlook -EventName "ItemSend" $MailObject = $Outlook.CreateItem($olMailItem) $MailObject.Display() function Outlook_ItemSend([object] $Item, [ref] $Cancel) { $Cancel = $TRUE $WSH.PopUp("Event worked") return $Null } 的示例,但是每次它看起来都非常特定于某些特殊的COM对象。到目前为止,我找不到任何示例来注册需要参数的MS-Office COM事件...

1 个答案:

答案 0 :(得分:0)

代替使用事件,您可以模态显示消息-调用MailItem.Display并传递true作为参数。