Ich versuche, eine Batchdatei zu schreiben, die einige Befehle mit einem lokalen Administratorkonto (Starten / Beenden eines Dienstes) und einige Befehle mit dem angemeldeten Benutzer (Kopieren von Dateien aus dem Benutzerverzeichnis) ausführen muss, und es treten Probleme auf. Ich habe die folgenden Befehle ausprobiert:
Runas mit / savecred
runas /user:(PC name)\(admin username) /savecred "net stop \"(service name)\""
runas /user:(PC name)\(admin username) /savecred "sc stop \"(service name)\""
Bei der Verwendung /savecred
werde ich nicht zur Eingabe eines Passworts aufgefordert. Stattdessen blinkt kurz ein Eingabeaufforderungsfenster und verschwindet. Ich kann nicht sagen, was sich in diesem Fenster befindet. Der Dienst wird nicht gestoppt.
Runas ohne / savecred
runas /user:(PC name)\(admin username) "net stop \"(service name)\""
runas /user:(PC name)\(admin username) "sc stop \"(service name)\""
Diese Befehle fordern mich zur Eingabe eines Kennworts auf, zeigen dann jedoch dasselbe Verhalten wie die oben genannten Befehle. Ein Eingabeaufforderungsfenster wird kurz angezeigt und der Dienst wird nicht gestoppt.
Idealerweise möchte ich das Passwort für die Sitzung speichern, da ich mehr Befehle mit den Details ausführen muss.
Ist das möglich und wenn ja, was mache ich falsch?
quelle
runas /user:(PC name)\(username) /savecred "net stop \"(service name)\"" >> log.txt
nichts in die Protokolldatei ausgegeben.LOGBATCH.BAT yourbatch.bat any_parameters_your_batch_needs
wird eine Protokolldatei erstellt, die alle von / ausgeführten Befehle / Aktionen enthält.yourbatch.bat
Lassen Sie uns wissen, was Sie dort sehen.Antworten:
Sie können Ihrem Skript Folgendes hinzufügen, damit es erhöht ausgeführt wird. Sie müssen nichts herunterladen.
quelle
Requesting administrative privileges...
auf dem Bildschirm zu drucken, bis das Zeitlimit überschritten ist.Teilen Sie Ihre Batch-Datei in zwei Teile. Der Teil, den Sie als admincmd ausführen möchten, wird in system32 eingefügt. Der Teil, den Sie in normalem cmd ausführen möchten, fügen Sie ihn in einen regulären Ordner ein und rufen Sie von hier aus die zweite Batch-Datei auf, die sich dort befindet, system32. Auf diese Weise läuft der zweite Teil immer in admincmd. Ich habe es versucht und es funktioniert für mich.
quelle
Wenn Ihnen Software von Drittanbietern nichts ausmacht, können Sie versuchen, sie als Kennwort runasspc auszuführen. Ihr Passwort wird in einer verschlüsselten Datei gespeichert. Das Passwort muss nicht in der Batch-Datei verfügbar gemacht werden.
quelle
Der Befehl "Runas" "sudo" Ihren Befehl nicht.
Um dies aus einer Batch-Datei heraus zu tun, müssen Sie die Befehle, die Sie erzeugen, "erhöhen". Laden Sie die Elevate Powertoy-Skripte herunter.
http://technet.microsoft.com/en-us/magazine/2008.06.elevation.aspx
Starten Sie Ihre Befehle wie folgt:
oder
quelle
runas /user:$PcName\$Username /savecred "elevate.cmd sc stop \"$ServiceName\""
,runas /user:$PcName\$Username /savecred "elevate.cmd net stop \"$ServiceName\""
,runas /user:$PcName\$Username /savecred "elevate.cmd net stop $ServiceName"
und jeder von ihnen gibt diesen Fehler zurück: RUNAS ERROR: Unable to run - elevate.cmd net stop alfrescoTomcat -2147467259: Unbekannter FehlerWas ich benutze, ist der folgende Code:
Legen Sie es nach Ihrem @echo aus und Bemerkungen.
quelle
Vereinfachte Antwort (zusätzlich zu user325534), wenn Sie nur in einem Verzeichnis mit verbessertem Zugriff arbeiten müssen:
quelle
Mit diesem Code kann der cmd nach dem Benutzerkennwort fragen. Der Benutzer muss sein Passwort eingeben und das
executable.bat
wird dann als Administrator ausgeführtmain.bat
ausführbare Datei.bat
quelle