从 Powershell 脚本调用 VB 脚本会在发送自动电子邮件时产生意外的运行时错误

Calling a VB Script from a Powershell script produces unexpected runtime errors when sending automated emails

我有以下 VB 脚本:

Set MSOutlook = CreateObject("Outlook.Application")
Set MailMsg = MSOutlook.CreateItem(0)

With MailMsg            
        .To = "xyz@gmail.com"
        .Subject = "my subject"
        .HTMLBody = "my text"
        .Display
        SendKeys "{TAB}{DOWN}{DOWN}{ENTER}", True
        .Send
End With

Set MSOutlook = Nothing
Set MailMsg = Nothing

此脚本在 VB 编译器中执行时运行良好,例如 Microsoft Visual Basic for Applications.

SendKeys 是必需的,因为我们在工作中使用了这个该死的 Titus 分类系统来对所有内容(例如电子邮件和文档)进行分类。

邮件发送正常,分类正确。

现在我尝试从以下 Powershell 脚本调用此脚本:

& cscript 'C:\Documents\sendEmail.vbs' //nologo

但是在 Powershell ISE 中或直接从 PowerShell 控制台调用 vb 脚本时收到以下错误:

cscript.exe : C:\Documents\sendEmail.vbs Microsoft VBScript runtime error: Type mismatch: 'SendKeys'

有人对此了解很多吗?为什么显然不能以这种方式使用 SendKeys 函数?

为了抢占评论,是的,我真的很想将这个 vb 功能移动到 PowerShell 脚本中,但是 TITUS 插件现在引起了各种令人头疼的问题。

谢谢

在 VBA 中,SendKeys 命令是全局 Interaction 模块的成员,因此始终在范围内。

在 VBScript 中,您需要使用 WScript.Shell 对象的 SendKeys 方法来代替:

Dim shell
Set shell = CreateObject("WScript.Shell")
shell.SendKeys "{TAB}{DOWN}{DOWN}{ENTER}", True