Cómo fusionar dos scripts vb en uno solo

Cómo fusionar dos scripts vb en uno solo

Tengo 2 scripts vb que me gustaría fusionar en un solo script.

el primero ejecuta un archivo por lotes oculto (ventana invisible). el segundo ejecuta el archivo por lotes como un usuario diferente. lo que necesito es tener un script vb que ejecute el archivo por lotes como un usuario diferente e invisible al mismo tiempo.

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

Cualquier ayuda es muy apreciada

Respuesta1

Si está intentando ejecutar este script como otro usuario sin que un usuario final lo vea, no hay forma de combinar estos scripts.

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

SendKeys depende de que la consola sea una ventana activa, lo que la pone a disposición del usuario final para que el script automatice el envío de claves a la interfaz más rápido de lo que el usuario es capaz de interferir. Si el usuario ya está escribiendo en el momento en que se ejecuta esto, su código es defectuoso y la ejecución se interrumpirá. Si ejecuta este script y mantiene presionada CUALQUIER tecla, evitará que funcione correctamente. En otras palabras, no, no puedes combinarlos.

Si está intentando ejecutar un script en segundo plano con una cuenta de usuario diferente, use el servicio de programación para ejecutar "%SYSTEMROOT%\system32\cmd.exe /c cscript yourscript.vbs 2>&1 %SYSTEMROOT%\logs\myscript .log" El servicio de programación le solicitará las credenciales si desea que se ejecute como un usuario específico.

No puedo recomendar el uso de /savecred bajo la sintaxis de runas ya que el usuario final tendrá la posibilidad de ejecutar runas con ese usuario en cualquier momento que lo desee. El método más seguro y eficaz a su disposición es utilizar tareas programadas con la ejecución de la interfaz de usuario suprimida.

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

información relacionada