두 개의 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" 일정 서비스는 특정 사용자로 실행하려는 경우 자격 증명을 요청합니다.

최종 사용자는 언제든지 해당 사용자와 함께 실행할 수 있으므로 runas 구문에서 /savecred를 사용하는 것은 권장할 수 없습니다. 가장 안전하고 효과적인 처리 방법은 UI 실행이 억제된 예약된 작업을 사용하는 것입니다.

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

관련 정보