글쓴이 보관물: 소장 마

두 개의 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

어떤 도움이라도 대단히 감사합니다



답변

이 스크립트를 최종 사용자가 보지 않고 다른 사용자로 실행하려는 경우 이러한 스크립트를 결합 할 수있는 방법이 없습니다.

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

SendKeys는 활성 창인 콘솔을 사용하므로 최종 사용자가 콘솔을 사용하여 사용자가 방해 할 수있는 것보다 빠르게 키를 인터페이스에 자동으로 전송합니다. 이것이 실행될 때 사용자가 이미 입력하고 있으면 코드에 결함이 있으며 실행이 중단됩니다. 이 스크립트를 실행하고 ANY 키를 누르고 있으면 제대로 작동하지 않습니다. 다시 말해, 당신은 그것들을 결합 할 수 없습니다.

다른 사용자 계정으로 백그라운드에서 스크립트를 실행하려는 경우 예약 서비스를 사용하여 “% 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

답변