Jump to content

Skript als Admin per geplante Tasks ausführen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich bin leider ein nicht allzu begabter Skripteschreiber, muss jetzt aber trotzdem ran.

 

Aufgabe ist wie folgt:

Ein Programm soll mit Hilfe eines herstellereigenen Tools deinstalliert werden, was in zwei Schritten funktioniert: C:\toolverzeichnis\tool.bat aufrufen --> Neustart --> C:\toolverzeichnis\tool2.bat aufrufen --> fertig. Nach dem zweiten Durchlauf soll durch die gleiche Batch eine neue Software installiert werden, die als MSI-Paket vorliegt. Das Tool muß in einer DOS-Box laufen, die mit Adminrechten gestartet wird (erkennbar an dem "Administrator: Eingabeaufforderung" im Fenstertitel), sonst schlägt die (De-)Installation der Software fehl. Damit sich das Ganze automatisieren läßt, soll nach dem Start der Batch keine weitere manuelle Eingabe mehr erforderlich sein.

Das ganze auf Server 2012R2 bis Server 2019. Ich habe auf den Servern Adminrechte.

 

Die Idee ist folgende:

Beim Durchlauf des ersten Skriptes erstelle ich einen geplanten Task, der einmal nach dem Reboot läuft, den Start der zweiten Batch anstößt und sich dann löscht. Der zweite Batch erledigt dann den zweiten Durchlauf der Deinstallation sowie die Installation der neuen Software.

 

Das Problem:

Ich habe folgende Zeile in meiner Batch stehen

schtasks /create /tn Aufgabe_nach_Neustart /tr C:\temp\Aufgabe_nach_Neustart.bat /sc onstart /ru system /rl highest /z

 

Die DOS-Box läuft nicht mit Adminrechten, so dass weder deinstalliert noch installiert wird. Trotz SYSTEM als User und höchsten Rechten. Ich habe keine Ahnung, wie man eine Box mit Adminrechten skriptgesteuert öffnet.

 

Die Lösung:

hier kämt ihr dann ins Spiel...

 

Es dankt im Voraus

OhGott

Link zu diesem Kommentar

Hi,

 

benötigt die (De-) Installation evtl. eine interaktiv angemeldete Session?

 

Generell solltest du ein wenig Logging in deine Scripte einbauen, dann siehst du ggfs. was noch wie passiert / funktioniert und kommst dem Problem näher. Evtl. findest du schon etwas, wenn du das Script von Hand in einer interaktiven Session mittels PsExec (PsExec.exe -s -i cmd.exe (PsExec - Sysinternals | Microsoft Learn)) als SYSTEM ausführst.

 

Gruß

Jan

Link zu diesem Kommentar

Hallo,

 

ich habe ein Logging (ein großes Wort :) ) eingebaut. Daher weiß ich, das der Task anläuft, denn es wird eine Textdatei mit entsprechendem Namen erzeugt. Das es nicht geklappt hat, zeigt ein Blick in das Log des Deinstallationstools. 

Wenn ich die Batch, die im Task gestartet wird, in einer von Hand geöffneten Admin-DOS-Box ausführe, dann läuft alles wie gewünscht.

All das bringt mich zu der Vermutung, das die Rechte nicht ausreichen.

 

Viele Grüße

OhGott

 

Link zu diesem Kommentar

Hallo,

 

das Deinstallationstool loggt standardmäßig nach %temp%, aber ich kann testen, was passiert, wenn ich ein Arbeitsverzeichnis setze.

Wäre aber b***d unschön, wenn das der Grund wäre, denn das läßt sich über schtasks nicht konfigurieren, glaube ich.

 

Viele Grüße

OhGott

bearbeitet von OhGottSkripte
Link zu diesem Kommentar

Hallo,

 

ein Kollege brachte gerade das hier auf: man kann aus einer Powershell mit dem Befehl

 

Start-Process C:\windows\syswow64\cmd.exe /C"C:\temp\Zweiter_Lauf_nach_Neustart.bat" -Verb runAs

 

eine DOS-Box mit erhöhten Rechten öffnen. Auch die Übergabe der Batchdatei funktioniert. Jedenfalls, wenn ich den Befehl in einem Powershell-Fenster eingebe. Gebe ich die Zeile in die Aufgabe ein, passiert leider gar nichts. Sollte ich diesen Ansatz weiter verfolgen?

 

Viele Grüße

OhGott

Link zu diesem Kommentar
vor 2 Stunden schrieb OhGottSkripte:

Das Problem:

Ich habe folgende Zeile in meiner Batch stehen

schtasks /create /tn Aufgabe_nach_Neustart /tr C:\temp\Aufgabe_nach_Neustart.bat /sc onstart /ru system /rl highest /z

 

Hast Du diese Kommandozeile mal manuell ausgeführt? Wird der Task angelegt? Eigentlich solltest Du CMD.exe starten und die BATCH Datei als Argument "/C C:\temp\Aufgabe_nach_Neustart.bat" übergeben.  ... der Pfad stimmt so?

bearbeitet von BOfH_666
Link zu diesem Kommentar
Am 30.1.2023 um 21:24 schrieb screamager:

Um die Frage von Jan nochmal aufzugreifen: Kann die Deinstallation denn überhaupt "silent" erfolgen?

 

vor 10 Stunden schrieb daabm:

Läuft sie überhaupt? Und wenn ja: Passiert da irgendwas, das ein User-Interface hat? Das geht nicht...

Ja, ja und nein. :grins2:

Das Tool was aufgerufen wird ist die SophosZap.exe. Der einzige Zweck ist es, Sophosprodukte rückstandsfrei von einem Rechner zu entfernen. Das Ding hat keine GUI, nach dem Start arbeitet es eine oder zwei Minuten vor sich hin und meldet sich dann zurück.

Das die Batch losläuft kann ich daran sehen, das eine Textdatei "Aufgabe gestartet" in C:\Temp angelegt wird (dritte Zeile in der Batch).

Was ich heute versuchen werde ist, das Tool direkt als SYSTEM-User mit erhöhten Rechten laufen zu lassen. Mal schauen, ob das funktioniert und ob man ggf per && die Befehle einfach hintereinander hängen kann.

 

Viele Grüße

OhGott

 

P.S.: Sorry für die Verzögerung, mich  hat es gestern krankheitsbedingt kurz niedergestreckt.

Link zu diesem Kommentar
echo off
set pfad=C:\temp

echo Task ist gestartet > %pfad%\Task_gestartet.txt

C:
cd \temp

rem Sophos deinstallieren
sophoszap.exe --confirm
if %errorlevel%==1 goto zaprun_error
echo "Zap Run 1 erfolgreich">%pfad%\Run_1_Erfolg.txt
copy %temp%\sophos*.txt %pfad%\SophosZap_Run_1.txt

:zaprun_1
echo Ein Fehler ist aufgetreten > %pfad%\Fehler.txt

 

Bitte schön..

Denkbar einfach. Die Task_gestartet.txt wird erzeugt, aber danach passiert nichts mehr. Das Log in %temp% bleibt unberührt bzw enthält genau die Einträge, die man bekommt, wenn das Tool nicht genug Rechte hat.

Startet man die Batch manuell aus einer DOS-Box mit erhöhten Rechten, läuft alles wie gewollt durch.

 

[EDIT] Alles liegt lokal unter C:\temp. An keiner Stelle des Skriptes wird auf irgendetwas außerhalb dieses Verzeichnisses zugegriffen.

 

Viele Grüße

OhGott

bearbeitet von OhGottSkripte
Ein Nachtrag
Link zu diesem Kommentar
vor 1 Minute schrieb BOfH_666:

eine Abfrage erzeugt, die um eine Bestätigung bittet und interaktiv beantwortet werden muss ... kann das sein?

 

Nein, der Schalter dient nur zur Bestätigung, das man den Befehl wirklich ausführen will. Im Sinne von "Ich bestätige, das ich das wirklich will." und nicht im Sinne von "Frage mich, ob ich das wirklich will."

Es ist auch das einzige Argument, das das Tool akzeptiert und auch nur genau so. Zwei Minuszeichen, alles klein geschrieben.

 

Viele Grüße

OhGott

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...