从Powershell脚本调用VB脚本会在发送自动电子邮件时产生意外的运行时错误
我有以下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
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