Kuddel071089 9 Geschrieben 28. September 2015 Melden Teilen Geschrieben 28. September 2015 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 Zitieren Link zu diesem Kommentar
Daniel -MSFT- 129 Geschrieben 28. September 2015 Melden Teilen Geschrieben 28. September 2015 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/ Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 28. September 2015 Autor Melden Teilen Geschrieben 28. September 2015 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 Zitieren Link zu diesem Kommentar
Daniel -MSFT- 129 Geschrieben 28. September 2015 Melden Teilen Geschrieben 28. September 2015 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? Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 28. September 2015 Autor Melden Teilen Geschrieben 28. September 2015 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 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 28. September 2015 Melden Teilen Geschrieben 28. September 2015 (bearbeitet) 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? bearbeitet 28. September 2015 von lefg Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 28. September 2015 Autor Melden Teilen Geschrieben 28. September 2015 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. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 28. September 2015 Melden Teilen Geschrieben 28. September 2015 (bearbeitet) Das ist schon interessant. Wird die Batch denn gestartet, ausgeführt und läuft bis zum Ende durch, ist das überprüfbar? Interessehalber nochmals nachgefragt, wozu soll das gut sein? bearbeitet 28. September 2015 von lefg Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 28. September 2015 Autor Melden Teilen Geschrieben 28. September 2015 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 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 28. September 2015 Melden Teilen Geschrieben 28. September 2015 (bearbeitet) 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 28. September 2015 von lefg Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 28. September 2015 Autor Melden Teilen Geschrieben 28. September 2015 (bearbeitet) 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 28. September 2015 von Kuddel071089 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 28. September 2015 Melden Teilen Geschrieben 28. September 2015 Derzeit ist Office 2010 installiert. Auf dem Altsystem lief 2003. Macht das evtl. einen Unterschied ? 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? Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 28. September 2015 Autor Melden Teilen Geschrieben 28. September 2015 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 ^^ Zitieren Link zu diesem Kommentar
Daniel -MSFT- 129 Geschrieben 28. September 2015 Melden Teilen Geschrieben 28. September 2015 (bearbeitet) Drei Sachen fallen mir als erstes auf: In dem Batch wird gar kein Excel automatisiert. Da werden Excel-Dateien kopiert. Das ist ein Unterschied. 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. 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 28. September 2015 von Daniel -MSFT- Zitieren Link zu diesem Kommentar
Beste Lösung Kuddel071089 9 Geschrieben 28. September 2015 Autor Beste Lösung Melden Teilen Geschrieben 28. September 2015 Drei Sachen fallen mir als erstes auf: In dem Batch wird gar kein Excel automatisiert. Da werden Excel-Dateien kopiert. Das ist ein Unterschied. 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. 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.