strcmd="cmd /c " & sCurPath & "\vsswritercheck.bat" return = wshshell.run(strcmd, 0, true) if return=0 then blnSuccess = True else blnSuccess = False end if
VBScript Capture StdOut von ShellExecute
Ich versuche, das folgende Code-Snippet als Teil eines Tools zum Erfassen und Protokollieren relevanter Systemdiagnosen auszuführen. Der Zweck dieses Snippets besteht darin, das Ergebnis der Ausführung des Befehls zu ermitteln:
vssadmin list writers
Der Ausschnitt ist wie folgt:
' Set WshShell = CreateObject("WScript.Shell") ' WScript.Echo sCurPath & "\vsswritercheck.bat" ' Set WshShellExec = WshShell.Exec("elevate.cmd cmd.exe /c " & sCurPath & "\vsswritercheck.bat") Set oShell = CreateObject("Shell.Application") oShell.ShellExecute "cmd.exe", sCurPath & "\vsswritercheck.bat",, "runas", 1 vsswriter = VSSWriterCheck Select Case oShell.Status Case WshFinished strOutput = oShell.StdOut.ReadAll Case WshFailed strOutput = oShell.StdErr.ReadAll End Select WScript.Echo strOutPut vsswriter = strOutPut
Mit dem ersten Code-Snippet (auskommentiert) kann ich den Befehl ausführen und stdout von der Batchdatei erfassen. Im zweiten Code kann ich nicht stdout erfassen.
Ich muss in der Lage sein, das Batch-Skript mit erhöhten Berechtigungen auszuführen, deshalb suche ich nach einem Kompromiss zwischen der Funktionalität der beiden.
Das gesamte aufrufende Skript kann aufgrund von Einschränkungen bei anderen Funktionen nicht im erhöhten Modus ausgeführt werden.
Ich bin auf der Suche nach Ideen, wie ich diese Ausgabe in mein Protokoll aufnehmen kann, da mir die Optionen zur Verfügung stehen, die im Rahmen der grundlegenden Skripts liegen.
2 Antworten auf die Frage
Wie wär's mit beiden?
Verwenden Sie den von Ihnen auskommentierten Code, der im nicht-erhöhten Modus arbeitet, und fügen Sie einen zusätzlichen Test hinzu. Wenn erhöhte Rechte erforderlich sind, ruft das Skript sich stattdessen mit ShellExecute () auf, wodurch der nachfolgende Aufruf von Exec () bereits ausgeführt wird erhöhte Rechte und trotzdem stdout erfassen.
Es ist ein bisschen verrückt, aber mühelos.
Verwandte Probleme
-
11
Wie kann ich die Datumsangaben in den EXIF-Daten stapelweise ändern?
-
4
Wozu dient der EX-Modus für die Stapelverarbeitung?
-
1
Batch-Scan viele Bilder
-
2
Wie kann ich Dateien auf einem PDA mit einer CMD / Batch-Datei löschen?
-
3
Ist es möglich, das Symbol einer MS-DOS-Bat-Datei zu ändern?
-
1
Wie führt man eine Batch-Datei aus, die auf dem VPN-Laufwerk gesichert werden soll?
-
6
Wie erstelle ich ein unbeaufsichtigtes Installationsprogramm für verschiedene Anwendungen in Windows...
-
7
Problem mit dynamischer IP-Notwendigkeit einer Batchdatei
-
4
Batch-Konvertierung von .doc in .docx (und gleichwertig für andere Office-Formate)?
-
16
Wie unterdrücken Sie die Bestätigung "Batch-Job beenden (J / N)"?