Jump to content

Batch ohne Session ausführen


Direkt zur Lösung Gelöst von Kuddel071089,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

auf einem Server soll eine Batch ausgeführt werden, in der u.a. Excel gestartet wird.

 

Da kein User dauerhaft angemeldet ist, muss das Ganze ohne Usersession durchgeführt werden.

 

Ich habe den Task auf dem jetzigen Server (WinSrv 2012 mit AD Anbindung) 1:1 eingerichtet wie auf dem alten Server (WinSrv 2003 ohne AD),

 

Irgendetwas scheint aber nicht zu funkitionieren.

 

Führt man die Batch ohne Task in einer Session aus, funktioniert alles wie gewünscht.

 

Hat jemand eine Idee, was mein Problem sein könnte ?

 

 

Danke schon einmal im Vorraus

Link zu diesem Kommentar

Lässt Du den Batch auch in einer Usersession ablaufen oder vom System? Hat denn der verwendete Useraccount die Rechte, in dem Ordner lesen und schreiben zu können?

 

BTW: Serverseitige Automatisierung mit Office ist nicht supported: https://support.microsoft.com/en-us/kb/257757

 

Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.

 

Über die lizenzrechtlichen Implikationen bist Du Dir im Klaren? Siehe dazu http://www.mcseboard.de/topic/196686-exceloffice-auf-server-f%C3%BCr-erp-software/

Link zu diesem Kommentar

Lässt Du den Batch auch in einer Usersession ablaufen oder vom System? Hat denn der verwendete Useraccount die Rechte, in dem Ordner lesen und schreiben zu können?

 

BTW: Serverseitige Automatisierung mit Office ist nicht supported: https://support.microsoft.com/en-us/kb/257757

 

Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.

 

Über die lizenzrechtlichen Implikationen bist Du Dir im Klaren? Siehe dazu http://www.mcseboard.de/topic/196686-exceloffice-auf-server-f%C3%BCr-erp-software/

 

Ich habe sowohl den User SYSTEM als auch den lokalen Administrator hinterlegt. In beiden Fällen brachte dies keinen Erfolg.

 

Zur Lizenproblematik: Unsere Clients sind alle via MS EA lizensiert

Link zu diesem Kommentar

Der User System ist der falsche. Da musst Du das Computerobjekt des Servers berechtigen. Ohne nähere Kenntnisse Deiner Struktur, des Batches und der geplanten Aufgabe ist hier schwer zu helfen. Supported ist es auf nicht. Läuft denn der Batch in einem Benutzerkontext?

 

Wie soll ich denn das Computerobjekt des Servers im Task berechtigen? Man kann nur "Integrierte Sicherheitsprinzipiale", "Gruppen" und "Benutzer" suchen und auswählen.

 

Hier int die Batch:

@ECHO OFF



set AKTMON=%DATE:~3,2%

echo %AKTMON%





rem Bis zum 30.6. werden die Vorjahresdaten geliefert

rem -------------------------------------------------

if %AKTMON% LSS 07 (

  call "E:\Transfer\SCA\SCAPersverControlling_Vorjahr.xls"

  copy "E:\Transfer\SCA\SCAPersverControlling_weg_Vorjahr.xls" "E:\Transfer\Export\SCAPersverControlling_weg_Vorjahr.xls" /Y

  rename "E:\Transfer\Export\SCAPersverControlling_weg_Vorjahr.xls" "SCAPersverControlling_Vorjahr.xls"

)







rem Aufbau der Datei des aktuellen Jahres

rem -------------------------------------

  call "E:\Transfer\SCA\SCAPersverControlling.xls"

  copy "E:\Transfer\SCA\SCAPersverControlling_weg.xls" "E:\Transfer\Export\SCAPersverControlling_weg.xls" /Y

  rename "E:\Transfer\Export\SCAPersverControlling_weg.xls" "SCAPersverControlling.xls"







rem Ab dem 1.7. werden die Daten des Folgejahres geliefert

rem ------------------------------------------------------

if %AKTMON% GEQ 07 (

  call "E:\Transfer\SCA\SCAPersverControlling_Folgejahr.xls"

  copy "E:\Transfer\SCA\SCAPersverControlling_weg_Folgejahr.xls" "E:\Transfer\Export\SCAPersverControlling_weg_Folgejahr.xls" /Y

  rename "E:\Transfer\Export\SCAPersverControlling_weg_Folgejahr.xls" "SCAPersverControlling_Folgejahr.xls"

)





@ECHO ON
Link zu diesem Kommentar

Moin,

 

zwar ist ist möglich, eine Batch im Konext des Systems ohne Benutzersitzung auszufühen, aber für rinr Anwendung wie Excel, die eine grafische Benutzeroberfläche hat, habe ich arge Zweifel. Wie sollte das denn gehen? Und welchen Sinn sollte so etwas machen?

 

Auf dem alten System unter WinSrv hat das ja auch funktioniert. Da war der User "ArbeitsAccount" hinterlegt. Der hat volle Admin-Rechte. Angemeldet war der User aber nicht.

 

Wenn dann war der Administrator mal angemdldet aber nicht.

Link zu diesem Kommentar

Das ist schon interessant.

 

Wird die Batch denn gestartet, ausgeführt und läuft bis zum Ende durch, ist das überprüfbar?

 

Sobald man im Task den Haken bei "Unabhängig von der Benutzernameldung ausführen" setzt, sieht man kein Konsolenfestern.

Es steht zwar in der Aufgabenplanung "Wird asgeführt", ab im Verzeichnis, wo die Excel-Datein liegen, tut sich nichts

Link zu diesem Kommentar

Hm,

 

ich habe schon mal den Start und das Ausführen einer Bach kontrolliert mit

 

echo Startbatch >> c:\BAusf.txt

echo Pos x >> c:\BAusf.txt

echo Endbatch >> c;\Ausf.txt

 

Aus den Einträgen in der .txt konnte ich dann Start und Ablauf verfolgen.

 

Mein Gedanke eben, könnte ein Nichtausführen an der Benutzerkontensteuerung (UAC) liegen?

bearbeitet von lefg
Link zu diesem Kommentar

Hm,

 

ich habe schon mal den Start und das Ausführen einer Bach kontrolliert mit

 

echo Startbatch >> c:\BAusf.txt

echo Pos x >> c:\BAusf.txt

echo Endbatch >> c;\Ausf.txt

 

Aus den Einträgen in der .txt konnte ich dann Start und Ablauf verfolgen.

 

Mein Gedanke eben, könnte ein Nichtausführen an der Benutzerkontensteuerung (UAC) liegen?

 

UAC ist deaktiviert.

 

Ich habe jetzt auch mal wie du ein kleines Log eingebaut. Die Batch wird sauber abgearbeitet, aber an den Exceldatein ändert sich nichts.

 

Derzeit ist Office 2010 installiert. Auf dem Altsystem lief 2003. Macht das evtl. einen Unterschied ?

bearbeitet von Kuddel071089
Link zu diesem Kommentar

Ich kann es dir nicht sagen, ich bin wohl noch nie auf solche Idee gekommen; mir fehlte wohl der Anlass dafür.

 

Interessehalber nochmals die Frage: Wozu soll das gut sein? Ob man das einmal neu denkt?

 

auf dem Server selber werden Urlaubsdaten etc. in *.xls abgelegt. Diese werden dann irgendwie weiterverarbeitet.

 

Das Script kommt aus einer anderen Abteilung, daher weiß ich darüber auch nicht genau bescheid. ich soll es nur zum laufen bekommen ^^

Link zu diesem Kommentar

Drei Sachen fallen mir als erstes auf:

 

  1. In dem Batch wird gar kein Excel automatisiert. Da werden Excel-Dateien kopiert. Das ist ein Unterschied.
  2. Du verwendest Laufwerksbuchstaben in dem Batch. Bitte stelle die auf UNC-Pfade um - die Laufwerksbuchstaben sind vermutlich während der geplanten Aufgabe gar nicht vorhanden.
  3. Die Rechtevergabe bezieht sich auf die Freigaben und die Dateien, nicht auf die Aufgabe selbst. Wenn Du die Aufgabe im Systemkontext ausführen läßt, dann muss das Computerkonto des Servers, also <Servername>$ Berechtigungen auf die Freigabe haben und per NTFS auf die Dateien. Wenn Du den Batch im Kontext eines Benutzers laufen läßt, dann muss der Benutzer die entsprechenden Rechte haben.

 

Nichts in dem obigen Batch erfordert, dass der verwendete Serviceaccount "alle Rechte" hat, also vermutlich Domainadmin ist. Das ist aus Sicherheitsaspekten nicht zu empfehlen.

 

Ergänzung: Vermutlich soll der Call-Befehl auf die Excel-Datei-Datei Excel ausführen? Kannst Du das mal umstellen und Excel.exe direkt aufrufen und die Datei als Argument übergeben?

bearbeitet von Daniel -MSFT-
Link zu diesem Kommentar
  • Beste Lösung

Drei Sachen fallen mir als erstes auf:

 

  1. In dem Batch wird gar kein Excel automatisiert. Da werden Excel-Dateien kopiert. Das ist ein Unterschied.
  2. Du verwendest Laufwerksbuchstaben in dem Batch. Bitte stelle die auf UNC-Pfade um - die Laufwerksbuchstaben sind vermutlich während der geplanten Aufgabe gar nicht vorhanden.
  3. Die Rechtevergabe bezieht sich auf die Freigaben und die Dateien, nicht auf die Aufgabe selbst. Wenn Du die Aufgabe im Systemkontext ausführen läßt, dann muss das Computerkonto des Servers, also <Servername>$ Berechtigungen auf die Freigabe haben und per NTFS auf die Dateien. Wenn Du den Batch im Kontext eines Benutzers laufen läßt, dann muss der Benutzer die entsprechenden Rechte haben.

 

Nichts in dem obigen Batch erfordert, dass der verwendete Serviceaccount "alle Rechte" hat, also vermutlich Domainadmin ist. Das ist aus Sicherheitsaspekten nicht zu empfehlen.

 

Ergänzung: Vermutlich soll der Call-Befehl auf die Excel-Datei-Datei Excel ausführen? Kannst Du das mal umstellen und Excel.exe direkt aufrufen und die Datei als Argument übergeben?

 

-Laufwerksbuchstabend sind alle entfernt. Läuft jetzt über die Serverfreigabe.

-Das Computerobjekt hat Schreibrechte für die Serverfreigabe bekoomen

-Cer Call befehl wurde ersetzt durch "C:\Program Files\Microsoft Office\Office14\EXCEL.EXE" /R "\\freigabe\...\...\excel-datei.xlsx"

 

Das Script läuft jetzt an und EXCEL wird im Hintergrund gestartet (sieht man im Taskmanager)

 

Nur tut sicht jetzt nichts mehr. Startet man den Befehl direkt ohne Task, öffnet sich Excel und schließt sich nach ca. 90 Sekunden wieder.

Der Prozess läuft jetzt aber schon ein paar Minuten

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...