So führen Sie zwei VB-Skripte zu einem Skript zusammen

So führen Sie zwei VB-Skripte zu einem Skript zusammen

Ich habe 2 VB-Skripte, die ich zu einem Skript zusammenführen möchte.

Das erste führt eine Batchdatei versteckt aus (unsichtbares Fenster). Das zweite führt die Batchdatei als anderer Benutzer aus. Was ich brauche, ist ein VB-Skript, das die Batchdatei als anderer Benutzer und gleichzeitig unsichtbar ausführt.

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

jede Hilfe wird sehr geschätzt

Antwort1

Wenn Sie versuchen, dieses Skript als anderer Benutzer auszuführen, ohne dass ein Endbenutzer es sieht, gibt es keine Möglichkeit, diese Skripte zu kombinieren.

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

SendKeys setzt voraus, dass die Konsole ein aktives Fenster ist, das sie dem Endbenutzer zur Verfügung stellt, sodass das Skript die Tasten automatisch und schneller an die Schnittstelle sendet, als der Benutzer eingreifen kann. Wenn der Benutzer zum Zeitpunkt der Ausführung bereits tippt, ist Ihr Code fehlerhaft und die Ausführung wird unterbrochen. Wenn Sie dieses Skript ausführen und dabei IRGENDEINE Taste gedrückt halten, wird es nicht mehr richtig funktionieren. Mit anderen Worten: Nein, Sie können sie nicht kombinieren.

Wenn Sie versuchen, ein Skript im Hintergrund unter einem anderen Benutzerkonto auszuführen, verwenden Sie den Planungsdienst, um „%SYSTEMROOT%\system32\cmd.exe /c cscript yourscript.vbs 2>&1 %SYSTEMROOT%\logs\myscript.log“ auszuführen. Der Planungsdienst fragt nach den Anmeldeinformationen, wenn Sie es als bestimmter Benutzer ausführen möchten.

Ich kann die Verwendung von /savecred unter der Runas-Syntax nicht empfehlen, da der Endbenutzer jederzeit mit diesem Benutzer Runas ausführen kann. Die sicherste und effektivste Methode, die Ihnen zur Verfügung steht, ist die Verwendung geplanter Aufgaben mit Ihrer unterdrückten UI-Ausführung.

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

verwandte Informationen