我面临着一个VBScript的问题,它会自动输入Runas命令的密码。我正在使用以下VBScript(runasDBUser.vbs)执行程序:

Option explicit
Dim oShell, k
Const PASSWORD = "DBPassword1~"
set oShell= Wscript.CreateObject("WScript.Shell")
WScript.Sleep 500
oShell.run("RunAs /noprofile /user:DBUser " & Chr(34) & "cmd /c\" & Chr(34) &       WScript.Arguments(0) & "\" & Chr(34) & Chr(34))
WScript.Sleep 700
oShell.SendKeys (PASSWORD)
Wscript.Quit

此脚本在批处理文件中调用:
cscript //Nologo //B runasDBUser.vbs ""C:postgresql\bin\initdb.exe" --locale=C --encoding=UTF-8  -U %ADMIN_DB% -D "%DATA_DIR%""`

这在某些Windows服务器上成功工作,但在某些服务器上不起作用。似乎无法正确输入密码,因此,initdb.exe将无法运行。当我在安装过程中手动输入密码时,它工作正常。在运行“Runas”命令时,是否有可用于自动输入DBUser密码的sendkeys的替代项?
或者,是否有其他脚本可以建议自动输入Runas密码?不能使用第三部分的exe文件,如psexec。

最佳答案

首先,我不认为最好使用vbscript发送密码。例如,如果用户将焦点转移到另一个窗口,则密码将被发送到该窗口。可能它在某些服务器上不起作用的原因是,在脚本运行时,另一个窗口可能已成为活动窗口。
如果真的需要自动化,最好使用AUTOIT。然而,尽管如此,另一种方法是在快捷方式文件中输入此命令。
runas/profile/env/savecred/user:username路径文件。因此,您只需手动输入一次密码,之后它将始终以指定的用户名执行。

10-07 15:38