bn2023
Goto Top

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:

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

Content-ID: 41788053534

Url: https://administrator.de/forum/batchdatei-per-batchscript-als-admin-ausfuehren-41788053534.html

Ausgedruckt am: 21.12.2024 um 17:12 Uhr

DivideByZero
DivideByZero 07.04.2024 um 17:19:34 Uhr
Goto Top
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
12168552861
12168552861 07.04.2024 um 18:13:19 Uhr
Goto Top
@echo off
net session >nul 2>&1 || (powershell -EP Bypass -NoP -C start "%~0" -verb runas &exit /b)    
call whatever.cmd
DivideByZero
DivideByZero 07.04.2024 aktualisiert um 22:10:51 Uhr
Goto Top
+1, wie immer
PeterGyger
PeterGyger 09.04.2024 um 09:52:14 Uhr
Goto Top
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
12168552861
12168552861 09.04.2024 aktualisiert um 15:08:23 Uhr
Goto Top
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 face-wink. 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.
PeterGyger
PeterGyger 09.04.2024 um 15:45:59 Uhr
Goto Top
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
12168552861
12168552861 09.04.2024 aktualisiert um 15:52:21 Uhr
Goto Top
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
)
PeterGyger
PeterGyger 09.04.2024 um 16:03:30 Uhr
Goto Top
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
12168552861
12168552861 09.04.2024 aktualisiert um 16:14:05 Uhr
Goto Top
Zitat von @PeterGyger:
Das setzte ich auf meine ToDo Liste. Einfach als kleine Fingerübung.
... für die ewigen 80er face-big-smile.
PeterGyger
PeterGyger 09.04.2024 um 17:17:23 Uhr
Goto Top
Beste Zeit - ever! 😂🤣😅