-1

У меня есть 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 ответ1

0

Если вы пытаетесь выполнить этот сценарий от имени другого пользователя, но конечный пользователь его не видит, то объединить эти сценарии невозможно.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .