두 개의 vb 스크립트를 하나의 스크립트로 병합하는 방법


-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
서브 루틴에 대해 읽으십시오 ( msdn.microsoft.com/en-us/library/dz1z94ha.aspx ). 서브 루틴이 무엇인지 모르기 때문에 복사중인 스크립트를주의 깊게 검사하는 것이 좋습니다.
Yorik

안녕하세요, 우리는 스크립트 작성 서비스가 아닙니다. 정확히 어디에 붙어 있습니까? 당신의 연구는 지금까지 무엇을 보여 주었습니까? 이미 무엇을 시도 했습니까? (힌트, wscript.shell Run 메소드를 찾아서 작동 방법을 배우십시오).
Ƭᴇcʜιᴇ007

답변:


0

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

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.