Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Win 2008er Server: Ausführung von Batch-Dateien (https://www.delphipraxis.net/162871-win-2008er-server-ausfuehrung-von-batch-dateien.html)

Lemmy 8. Sep 2011 08:15

Win 2008er Server: Ausführung von Batch-Dateien
 
Hi,

habe einen Win2008er Server. Vor Jahren habe ich da Batch-Scripte geschrieben, die per Robocopy die Datensicherung erledigen. Eines davon, die WOchensicherung, sichert abwechselnd in 2 Verzeichnisse, die umbenannt werden:

[code]
ren n:\Woche\Woche2 Woche3
ren n:\Woche\Woche1 Woche2
ren n:\Woche\Woche3 Woche1

[code]

Wenn ich diese Batch manuell ausführe, klappt alles wunderbar. Führe ich die aber über die Aufgabenverwaltung aus (Weiß nicht mehr genau wie das heißt - den Taskplaner von Win 2008 eben), dann geht es nicht. Die Rechte sind kein Problem, da eingestellt ist, dass die Teile mit den höchsten Rechten ausgeführt werden sollen. Interessant auch: Der Aufruf der anschließenden Sicherung funktioniert, läuft dann aber eben immer in das selbe Verzeichnis...

Hat jemand nen Tipp was ich noch versuchen könnte? Ich protokolliere die Ausführung der Batch mit, kann aber dort auch kein Problem feststellen....


GRüße

DelphiBandit 8. Sep 2011 08:22

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Hi Lemmy,

ich habe das "einigermaßen" gleiche Problem mit zwei Batches, welche eine virtuelle Maschine (VirtualBox) vor der Sicherung herunterfahren sollen und danach wieder starten. Funktionieren bei direktem Aufruf beide ganz wunderbar, sobald sie von den "geplanten Tasks" ausgeführt werden aber nicht mehr.

Hab schon einiges durch von "Domainenrechten zur Ausführung von Stapeldateien" bis "Ausführen als Administrator" etc. Habe die Batches in eine Datei protokollieren lassen, laufen tun sie und protokollieren auch, aber das Kommando "vboxmanage" scheint nicht ausgeführt zu werden.

Deshalb suche ich ebenso "händeringend" nach des Rätsels Lösung.

RWarnecke 8. Sep 2011 08:30

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Hallo Ihr beiden,

ich hatte ähnliche Probleme mit dem Programm FreeFileSync. Wenn in der Batchdatei nichtas anderes drinsteht ausser die Befehle, die die Sicherung durchführen soll und keine IF-Abfragen oder FOR-Schleifen, dann schreibt die ganzen Befehle in den Trigger der Aufgabenplanung. Bei den Befehlen muss dann der ganze Pfad zum Programm von Robocopy oder vboxmanager. Dann sollte es funktionieren. Ich habe das gleiche mit meinen FreeFileSync Befehlen gemacht.

Meine Vermutung ist dabei, dass die Aufgabenplanung nicht damit klarkommt, wenn extra Befehle mit eventuell visuellem Fenster aus einer Batch aufgerufen werden.

Lemmy 8. Sep 2011 09:11

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Hi,

Super! Vielen Dank für den Tipp, werde ich gleich mal versuchen...

Union 8. Sep 2011 09:16

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Stimmen die Dateizugriffsrechte für das Umbenennen?

RWarnecke 8. Sep 2011 09:39

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Zitat:

Zitat von Union (Beitrag 1122564)
Stimmen die Dateizugriffsrechte für das Umbenennen?

Er hatte doch geschrieben, dass wenn er die Batch manuell ausführt alles wie gewünscht funktioniert. Deshalb kann man schon davon ausgehen, dass die Zugriffsrechte stimmen.

Union 8. Sep 2011 09:42

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Nein, kann man nicht, da evtl. aus dem AT-Konto eine andere SID verwendet wird mit anderen Berechtigungen.

Lemmy 8. Sep 2011 09:56

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Wegen den Zugriffsrechten: Die Aufgaben werden "mit den höchsten Privilegien" ausgeführt. FÜr die Änderung brauche ich das Passwort des Domain-Admin. Von daher gehe ich davon aus, bzw. bin davon ausgegangen, dass das kein Problem darstellt. Insbesondere auch deshalb, weil die Ausführung mit anderen Shedulern bisher reibungslos funktioniert hat UND da das anschließende Robocopy ebenfalls ohne Probleme durchläuft, d.h. da laufen auf jeden Fall in Woche1 die aktuellen Daten rein (neue Verzeichnisse usw.). Oder können die Zugriffsrechte detaillierter eingestellt werden als Lesen, schreiben, vollzugriff? Wenn ja wo? Ich bin auf dem 2008er leider überhaupt nicht fit...

Grüße

Union 8. Sep 2011 10:06

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Also erstmal: Das Teil WIRD ausgeführt? Aber es kann die Verzeichnisse nicht umbenennen? Dann würde ich mal ein rudimentäres "debugging" vorschlagen, indem Du entweder mit Errorlevel oder einer Umleitung z.b. ">>c:\garantiert_beschreibbares_Verzeichnis\copyjo b.log" arbeitest. Dann siehst Du ja ob Du einen Zugriffsfehler oder sonstiges erhältst.

Luckie 8. Sep 2011 10:09

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Nur weil das Script als Administrator ausgeführt wird, heißt, das noch lange nicht, dass es auch Zugriff auf die Verzeichnisse hat. Ich kann auch dem Benutzer SYSTEM die Zugriffsrechte auf ein Verzeichnis entziehen und das sogar als eingeschränkter Benutzer, wenn ich das Verzeichnis erstellt habe und ich somit der Besitzer bin.

Lemmy 8. Sep 2011 10:09

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Hi,

ja das Teil wird ausgeführt und ein Logging bzgl. der AUsgabe mach ich schon, da kommen aber keine Meldungen.

Allerdings dürfte dein erstern Einwurf wohl doch das Problem darstellen:

Die Ordner liegen auf einem Netzlaufwerk und anscheinend schiebt hier Windows einen Riegel vor (Policies) weil ren nach diesen schaut schlägt das fehl, robocopy läuft aber wohl durch. Mir wurde der Vorschlag gemacht, ein kleines Programm in Delphi zu schreiben das die umbenennerei macht und dieses entsprechend auszuführen

ich schau mal ob da was dran ist...

Grüße

Luckie 8. Sep 2011 10:17

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Steht eventuell was in der Eriegnisanzeige?

Union 8. Sep 2011 10:29

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Naja, wenn das Laufwerk nicht existiert ;) Dann musst Du die entsprechenden net use N: \\server\share vorher absetzen oder in einem Startup-Script. Aber bis Du das korrekt ausgeführt kriegst musst Du die Domainpolicy ändern.

Lemmy 8. Sep 2011 10:41

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Nein, in der Ergebnisanzeige steht nichts..

und wo steht dass das Laufwerk nicht existiert? Klar ist das da und ich kann auch darauf zugreifen sonst würde die manuelle Ausführung ja auch nicht gehen...

Und wegen der Domain-Policy - was muss ich da ändern?

Union 8. Sep 2011 10:52

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Aber doch nur weil Du interaktiv angemeldet bist, da werden die persistenten Mappings wiederhergestellt.

Union 8. Sep 2011 10:54

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Zitat:

Nein, in der Ergebnisanzeige steht nichts..
Wenn über Taskschd ausgeführt MUSS ein Eintrag (ich glaube ID 200) drinsein.

Lemmy 8. Sep 2011 10:59

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Zitat:

Zitat von Union (Beitrag 1122602)
Aber doch nur weil Du interaktiv angemeldet bist, da werden die persistenten Mappings wiederhergestellt.

OK, aber wenn ich die Aufgabe manuell ausführen lasse, dann bin ich auch angemeldet, dann sind die Mappings auf jeden Fall auch da... Wegen dem Ereignisprotokoll schau ich nochmal nach ob ich nciht doch noch was finde...

Union 8. Sep 2011 11:04

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Wie gesagt, debug das Teil. z.b. mal dir n:\ >>error.log am Anfang, dann siehst Du ja ob dort Drive not found drinsteht. Und wenn es existiert: Hast Du mal versucht als Benutzer den Netzwerkdienst-Prinzipal zu verwenden?

himitsu 8. Sep 2011 11:10

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Schon alleine wenn man manuell eine BachtdaTEI ALS Administrator startet, stimmt das Arbeitsverzeichnis nicht mehr :wall:

Besser immer mit absoluten Pfadedn arbeiten.

Aber notfalls kann man auch etwas tricksen ... z.B. hab ich mir mal diese zwei Zeilen erfunden, welche nun als erste Befehle in einigen Batchscripten zu finden sind.
Delphi-Quellcode:
%~d0
CD "%~dp0"
Mal sehn, wer errät, was diese Befehle machen. :stupid:

Union 8. Sep 2011 11:23

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Wechsel auf das Laufwerk wo der Batch sich befindet und dann in das Verzeichnis.

Dalai 23. Mär 2012 22:52

AW: Win 2008er Server: Ausführung von Batch-Dateien
 
Trotz des Alters des Themas gebe ich mal meinen Senf dazu. Netzlaufwerke sind schon seit XP nutzerspezifisch (bei Win2k waren sie das auch, aber nicht so richtig getrennt). Deshalb ist das Netzlaufwerk eben wahrscheinlich nicht für den ausführenden Nutzer verfügbar.

Probier's einfach mal aus, indem du dich als normaler Nutzer (ein anderer als der, der das Skript in der Aufgabenplanung ausführen soll) anmeldest, das Netzlaufwerk hier verbindest und dann eine CMD mit Rechtsklick als eben jener Nutzer startest, der das Skript ausführen soll. Versuchst du dann in der CMD, auf das Netzlaufwerk zu wechseln, wird das nicht klappen. Dasselbe Spiel gibt es übrigens auch mit der UAC, denn auch wenn die Prozesse hier mit demselben Nutzerkonto laufen, so haben sie trotzdem keine gemeinsamen Netzlaufwerke (weil unterschiedlicher Sicherheitskontext).

Die Lösung wurde ja bereits genannt: ein
Code:
net use lw: \\server\freigabe
am Anfang des Skripts.

Zitat:

Zitat von himitsu (Beitrag 1122616)
Delphi-Quellcode:
%~d0
CD "%~dp0"

Nur der Vollständigkeit halber: das geht auch kürzer:
Code:
CD /D "%~dp0"
MfG Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz