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