Batchdatei per Batchscript als Admin ausführen
Hallo,
ich habe eine kleine Batchdatei, in der ich wiederum eine andere Batch starten möchte.
Diese muss jedoch mit Adminrechten gestartet werden.
Das bekomme ich irgendwie nicht hin.
Hier der entsprechende Teil aus meinem Code:
Ich vermute mal, dass ich den "runas"-Befehl irgendwie in die Codezeile darüber integrieren muss.
Könnt Ihr helfen?
Grüße,
BN
ich habe eine kleine Batchdatei, in der ich wiederum eine andere Batch starten möchte.
Diese muss jedoch mit Adminrechten gestartet werden.
Das bekomme ich irgendwie nicht hin.
Hier der entsprechende Teil aus meinem Code:
call "D:\Desktop\BACKUP\Backup_DAD.bat"
runas /USER:administrator
Ich vermute mal, dass ich den "runas"-Befehl irgendwie in die Codezeile darüber integrieren muss.
Könnt Ihr helfen?
Grüße,
BN
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 41788053534
Url: https://administrator.de/contentid/41788053534
Ausgedruckt am: 18.11.2024 um 23:11 Uhr
10 Kommentare
Neuester Kommentar
Moin,
natürlich, Du musst das kombinieren. Runas erwartet die Angabe des Programms, das ausgeführt werden soll.
Details siehe Runas – Programme starten mit einem anderen Benutzerkonto. Das solltest Du Dir durchlesen, denn normalerweise kommst Du nicht so einfach in den Admin-Kontext. Wird hier sicherlich das typische Problem kommen, dass runas kein Passwort auf der Kommandozeile zulösst.
Gruß
DivideByZero
natürlich, Du musst das kombinieren. Runas erwartet die Angabe des Programms, das ausgeführt werden soll.
Details siehe Runas – Programme starten mit einem anderen Benutzerkonto. Das solltest Du Dir durchlesen, denn normalerweise kommst Du nicht so einfach in den Admin-Kontext. Wird hier sicherlich das typische Problem kommen, dass runas kein Passwort auf der Kommandozeile zulösst.
Gruß
DivideByZero
@echo off
net session >nul 2>&1 || (powershell -EP Bypass -NoP -C start "%~0" -verb runas &exit /b)
call whatever.cmd
Zitat von @12168552861:
@echo off
net session >nul 2>&1 || (powershell -EP Bypass -NoP -C start "%~0" -verb runas &exit /b)
call whatever.cmd
Hallo meisterroehrich
Eine Verständnisfrage. "Net session" kann in CMD nicht ohne Admin Rechte ausgeführt werden. D.h. man erhält einen "Systemfehler 5" zurück. Wie löst Du diesen Sachverhalt?
Beste Grüsse
Zitat von @PeterGyger:
Eine Verständnisfrage. "Net session" kann in CMD nicht ohne Admin Rechte ausgeführt werden. D.h. man erhält einen "Systemfehler 5" zurück. Wie löst Du diesen Sachverhalt?
Das ist ja der Sinn dahinter . Die "net session" Abfrage wird dazu benutzt um festzustellen ob das Skript schon elevated läuft oder eben nicht und eben nur wenn der Befehl fehlschlägt (das wird mit der doppelten Pipe | | ermittelt) was nur bei non elevated Sessions passiert, startet sich das Skript selbst erneut diesmal aber elevated. Die Fehlermeldung von net session wird mit >nul 2>&1 unterdrückt und ins Nirvana befördert, die sieht man also nicht! Works as designed.Eine Verständnisfrage. "Net session" kann in CMD nicht ohne Admin Rechte ausgeführt werden. D.h. man erhält einen "Systemfehler 5" zurück. Wie löst Du diesen Sachverhalt?
Hallo
Vielen Dank für die präzise Erklärung! Das nennt man von einem Meister unterrichtet werden. Wirklich eine elegante Lösung.
Handhabt das die Shell generell so, dass wenn ein Fehler bei der Ausführung auftritt und ein doppeltes Pipe folgt, wird der nachfolgende Befehl ausgeführt?
D.h. man kann sich die IF / Errorlevel Abfrage sparen?
Viele Grüsse
Vielen Dank für die präzise Erklärung! Das nennt man von einem Meister unterrichtet werden. Wirklich eine elegante Lösung.
Handhabt das die Shell generell so, dass wenn ein Fehler bei der Ausführung auftritt und ein doppeltes Pipe folgt, wird der nachfolgende Befehl ausgeführt?
D.h. man kann sich die IF / Errorlevel Abfrage sparen?
Viele Grüsse
Handhabt das die Shell generell so, dass wenn ein Fehler bei der Ausführung auftritt und ein doppeltes Pipe folgt, wird der nachfolgende Befehl ausgeführt?
&& (und) führt nachfolgendes aus sofern Ergebnis des letzten Befehls erfolgreich, | | (oder) führt das folgende nur aus wenn es einen Fehler gab. Aber Achtung nicht jeder Befehl liefert auch immer korrekt Errorlevel.D.h. man kann sich die IF / Errorlevel Abfrage sparen?
Ja. Lässt sich auch hintereinanderschalten für beide Fälle.meinbefehl.exe && (
echo Erfolg
) || (
echo Fehler
)
Hallo
Danke für die Erklärung. Ich habe einige Batches programmiert, Aber das war mir neu.
Ich habe eine Referenzdazu gefunden. Das setzte ich auf meine ToDo Liste. Einfach als kleine Fingerübung.
Vielen Dank für die Erklärung.
Beste Grüsse
Danke für die Erklärung. Ich habe einige Batches programmiert, Aber das war mir neu.
Ich habe eine Referenzdazu gefunden. Das setzte ich auf meine ToDo Liste. Einfach als kleine Fingerübung.
Vielen Dank für die Erklärung.
Beste Grüsse
... für die ewigen 80er .