如何將兩個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,因為最終使用者可以隨時使用該使用者執行 runas。最安全、最有效的方法是使用排程任務並抑制 UI 執行。

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

相關內容