powershell - 发送自动电子邮件时,从 Powershell 脚本调用 VB 脚本会产生意外的运行时错误
问题描述
我有以下 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 中,您需要使用对象的SendKeys
方法来WScript.Shell
代替:
Dim shell
Set shell = CreateObject("WScript.Shell")
shell.SendKeys "{TAB}{DOWN}{DOWN}{ENTER}", True
推荐阅读
- saml - Keycloak:如何实现自定义身份验证器来拦截 SAML 响应?
- javascript - 试图弄清楚为什么我的 JSON.parse 函数没有正确更新其“this”属性
- authentication - 如何使用 JWT 令牌而不是用户名、密码对 Openfire XMPP 进行身份验证
- html - 如何使用 OnChanges 角度来更改背景颜色?
- python - 清理数据框-将一个单元格中的值分配给列
- swift - 如何将“UIImagePickerController.InfoKey.originalImage”转换为“UIImage”
- react-native - 使用 lib 将 React Native 中的图标加粗:react-native-vector-icons
- mongodb - 如何使用 sqldeveloper 连接 Mongo DB
- python - 如何在特定帧的 open cv python 中播放带有音频的视频?
- authentication - 如何修复身份验证最终失败(Ldap)