Как объединить два скрипта 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". Служба планирования запросит учетные данные, если вы хотите, чтобы она запускалась от имени определенного пользователя.

Я не могу рекомендовать использовать /savecred в синтаксисе runas, так как конечный пользователь будет иметь возможность runas с этим пользователем в любое время, когда пожелает. Самый безопасный и эффективный метод, который у вас есть, — это использование запланированных задач с подавленным выполнением пользовательского интерфейса.

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

Связанный контент