我创建了以下runas.vbs脚本:
**************
Option explicit
Dim oShell, k
Const PASSWORD = "Pass123~"
set oShell= Wscript.CreateObject("WScript.Shell")
WScript.Sleep 500
oShell.run("RunAs /noprofile /user:%computername%\postgres " & Chr(34) & "cmd /c\" &
Chr(34) & WScript.Arguments(0) & "\" & Chr(34) & Chr(34))
WScript.Sleep 1000
For k=1 To Len(PASSWORD)
WScript.Sleep 200
oShell.SendKeys Mid(PASSWORD,k,1)
Next
Wscript.Quit
**************
我在批处理文件中使用此vbscript来运行initdb.exe(Postgresql)。 用作:
cscript //Nologo //B runasNSPostgres.vbs ""%LG_PATH%\initdb.exe" --locale=C --encoding=UTF-8 -U %DBADMIN% -D "%DBDATA%""
执行此命令时,将打开另一个命令提示符屏幕,启动initdb处理。我不希望显示新的cmd提示屏幕。我希望initdb.exe在后台运行。
答案 0 :(得分:0)
如果隐藏命令提示符窗口,则无法使用SendKeys
向其发送密码键盘。
但是,您可以使用其他方法。尝试使用ECHO
命令并将其输出传递给RunAs
。
oShell.Run "echo " & PASSWORD & " | runas /noprofile ...", 0
使用0
作为第二个参数来阻止窗口出现。