如何将两个vb脚本合并为一个脚本

如何将两个vb脚本合并为一个脚本

我有 2 个 vb 脚本,想要合并到一个脚本中。

第一个以隐藏(不可见窗口)的方式运行批处理文件。第二个以不同的用户身份运行批处理文件。我需要的是一个 vb 脚本,以不同的用户身份运行批处理文件,同时不可见。

1)

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Folder\BatchFileName.bat" & Chr(34), 0
Set WinScriptHost = Nothing

2)

Option explicit
Dim oShell
set oShell= Wscript.CreateObject("WScript.Shell")
oShell.Run "RunAs /noprofile /user:domain\domainuser ""C:\Folder\BatchFileName.bat"""
WScript.Sleep 100
oShell.Sendkeys "yourpassword~"
Wscript.Quit

任何帮助深表感谢

答案1

如果您尝试以另一个用户的身份执行此脚本而最终用户看不到它,那么就无法组合这些脚本。

oShell.Run "RunAs /noprofile /user:domain\domainuser ""C:\Folder\BatchFileName.bat"""
WScript.Sleep 100
oShell.Sendkeys "yourpassword~"

SendKeys 依赖于控制台作为活动窗口,这使得终端用户可以使用它,这样脚本就可以自动将按键发送到界面,速度比用户能够干扰的速度要快。如果用户在执行此操作时已经在输入,则您的代码存在缺陷,执行将被中断。如果您运行此脚本并按住任意键,您将阻止它正常工作。换句话说,您不能将它们组合在一起。

如果您尝试在不同的用户帐户下在后台运行脚本,请使用调度服务执行“%SYSTEMROOT%\system32\cmd.exe /c cscript yourscript.vbs 2>&1 %SYSTEMROOT%\logs\myscript.log”如果您希望以特定用户身份运行,调度服务将要求提供凭据。

我不建议在 runas 语法下使用 /savecred,因为最终用户可以随时以该用户的身份运行。最安全、最有效的方法是使用计划任务和抑制的 UI 执行。

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run "cmd.exe /c C:\Folder\BatchFileName.bat", 0
Set WinScriptHost = Nothing

相关内容