[英]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
分類系統來對所有內容進行分類,例如電子郵件和文檔。
email 發送良好,分類正確。
現在我正在嘗試從以下 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 function 顯然不能以這種方式使用?
為了搶先發表評論,是的,我真的很想將這個 vb 功能移動到 PowerShell 腳本中,但是 TITUS 插件現在正在引起各種各樣的麻煩。
謝謝
在 VBA 中, SendKeys
命令是全局Interaction
模塊的成員,因此始終在 scope 中。
在 VBScript 中,您需要使用WScript.Shell
object 的SendKeys
方法:
Dim shell
Set shell = CreateObject("WScript.Shell")
shell.SendKeys "{TAB}{DOWN}{DOWN}{ENTER}", True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.