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-Key: 41788053534

Url: https://administrator.de/contentid/41788053534

Printed on: May 3, 2024 at 23:05 o'clock

Member: DivideByZero
DivideByZero Apr 07, 2024 at 15:19:34 (UTC)
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
Mitglied: 12168552861
12168552861 Apr 07, 2024 at 16:13:19 (UTC)
Goto Top
@echo off
net session >nul 2>&1 || (powershell -EP Bypass -NoP -C start "%~0" -verb runas &exit /b)    
call whatever.cmd
Member: DivideByZero
DivideByZero Apr 07, 2024 updated at 20:10:51 (UTC)
Goto Top
+1, wie immer
Member: PeterGyger
PeterGyger Apr 09, 2024 at 07:52:14 (UTC)
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
Mitglied: 12168552861
12168552861 Apr 09, 2024 updated at 13:08:23 (UTC)
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.
Member: PeterGyger
PeterGyger Apr 09, 2024 at 13:45:59 (UTC)
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
Mitglied: 12168552861
12168552861 Apr 09, 2024 updated at 13:52:21 (UTC)
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
)
Member: PeterGyger
PeterGyger Apr 09, 2024 at 14:03:30 (UTC)
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
Mitglied: 12168552861
12168552861 Apr 09, 2024 updated at 14:14:05 (UTC)
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.
Member: PeterGyger
PeterGyger Apr 09, 2024 at 15:17:23 (UTC)
Goto Top
Beste Zeit - ever! 😂🤣😅