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

从Powershell脚本调用VB脚本会在发送自动电子邮件时产生意外的运行时错误,powershell,outlook,vbscript,Powershell,Outlook,Vbscript,我有以下VB脚本: Set MSOutlook = CreateObject("Outlook.Application") Set MailMsg = MSOutlook.CreateItem(0) With MailMsg .To = "xyz@gmail.com" .Subject = "my subject" .HTMLBody = "my tex

我有以下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

之所以需要发送密钥,是因为我们在工作中有一个该死的分类系统,可以对所有东西进行分类,比如电子邮件和文档

电子邮件发送良好,分类正确

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

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

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

cscript.exe:C:\Documents\sendmail.vbs Microsoft VBScript运行时错误:类型不匹配:“SendKeys”

任何人都知道这一点,为什么SendKeys函数显然不能以这种方式使用

为了避免评论,是的,我真的很想将这个vb功能移到PowerShell脚本中,但是TITUS插件现在正在引起各种各样的麻烦


感谢

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

在VBScript中,您需要改用
WScript.Shell
对象的
SendKeys
方法:

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

在VBA中,
SendKeys
命令是全局
交互
模块的成员,因此始终在作用域内

在VBScript中,您需要改用
WScript.Shell
对象的
SendKeys
方法:

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

我们曾经使用提图斯,直到我们切换到电子邮件分类,然后是dset。为什么不让Powershell为你做这一切,而不是调用VBScript呢?我同意。你把这么多脚本链接在一起是自找麻烦。。。。最后是sendkey。我建议你把整件事都写在Powershell里。或者去掉Powershell,只使用
cscript.exe
这就是计划,我只是想先让一些东西“在实践中”起作用-想法是将所有这些遗留的vb东西移植到PSU,我们以前使用Titus,直到我们切换到电子邮件分类,然后是dset。为什么不让Powershell为你做这一切,而不是调用VBScript呢?我同意。你把这么多脚本链接在一起是自找麻烦。。。。最后是sendkey。我建议你把整件事都写在Powershell里。或者去掉Powershell,只使用
cscript.exe
这就是计划,我只是想先让一些东西“在实践中”工作——想法是将所有这些遗留的vb东西移植到PS