Benutzer mit den meisten Antworten
Task startet zwar Powershelscript aber dieses startet wiederum Excel nicht.

Frage
-
Hallo
Ich arbeite in einem größeren Unternehmen
Ich habe zwei Acount's (Username) der eine ist mein persönlicher Benutzername
der andere soll automatische Task abarbeiten (Rechnername)Ich möchte in Regelmäßigen abständen Informationen von SAP in eine Exceldatei schreiben.
Ich habe einen Task angelegt der automatisch dies über den Usernamen Acount machen soll.
(Da der Rechnernamen Acount keine Rollen und Rechte für SAP besitzt)
Die dafür notwendigen Rechte wurden von der IT dem Username erteilt.mit dem Rechnername Acount kann der Task das Powershell script starten und dieses wiederum Excel
(SAP Abfrage geht nicht mit Rechnername!)mit dem Usernamen Acount kann der Task nur das Powershell script starten! Excel wird nicht gestartet.
Kann mir jemand einen Tipp geben!
P.S. Wenn ich die Powershell script's von Hand starte, laufen diese durch ohne Probleme egal mit welchem Acount!
Antworten
-
Je nach der Komplexität der aus SAP extrahierten Daten, sehe ich zwei Optionen für Dich. Du könntest die Daten in eine CSV-Datei schreiben und diese entweder direkt in Excel öffnen oder sie als Datenquelle benutzen, die Excel importiert und entsprechend aufbereitet. Oder Du schaust Dir mal das Modul ImportExcel an. Das benötigt kein Office um Excel-Dateien erzeugen zu können.
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 5. Dezember 2019 16:35
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 9. Dezember 2019 16:56
-
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 5. Dezember 2019 16:35
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 9. Dezember 2019 16:56
-
Auch das Anlegen der Verzeichnisse reicht mitunter nicht mehr.
Ich musste da bei Office 2016 einen zusätzlichen Umweg machen:Starten von Excel mit einer temporären Arbeitsdatei.
Ermitteln der Instanz per COM über die ROT (Running-Objekt-Table). Für diesen Zugriff hatte ich mir mal ein C++-Progrämmchen geschrieben.
Excel registriert jede Instanz, jedes Workbook über die ROT.
Man kann dann das COM-Objekt über die ROT auslesen und Excel dann automatisieren.https://adndevblog.typepad.com/autocad/2013/12/accessing-com-applications-from-the-running-object-table.html
Ein Hauptproblem besteht noch im Beenden von Excel, da der Application.Quit-Aufruf nicht dazu führt, dass der Prozess sich beendet. Hierzu war dann das Ermitteln der Prozess-ID und der Aufruf von "Taskkill -f -p nnnn" erforderlich.
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 5. Dezember 2019 16:35
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 9. Dezember 2019 16:56
Alle Antworten
-
Dies ist von Microsoft auch nicht gewünscht.
Für Excel (und Office im allgemeinen) gilt: Taskautomatisierung wird nicht supported.
Set Excel 2016 habe ich da auch so meine Schwierigkeiten mit.
Du kannst die Task aber ausführen, wenn du die Option "Nur ausführen, wenn User angemeldet ist" wählst. -
Je nach der Komplexität der aus SAP extrahierten Daten, sehe ich zwei Optionen für Dich. Du könntest die Daten in eine CSV-Datei schreiben und diese entweder direkt in Excel öffnen oder sie als Datenquelle benutzen, die Excel importiert und entsprechend aufbereitet. Oder Du schaust Dir mal das Modul ImportExcel an. Das benötigt kein Office um Excel-Dateien erzeugen zu können.
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 5. Dezember 2019 16:35
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 9. Dezember 2019 16:56
-
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 5. Dezember 2019 16:35
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 9. Dezember 2019 16:56
-
Auch das Anlegen der Verzeichnisse reicht mitunter nicht mehr.
Ich musste da bei Office 2016 einen zusätzlichen Umweg machen:Starten von Excel mit einer temporären Arbeitsdatei.
Ermitteln der Instanz per COM über die ROT (Running-Objekt-Table). Für diesen Zugriff hatte ich mir mal ein C++-Progrämmchen geschrieben.
Excel registriert jede Instanz, jedes Workbook über die ROT.
Man kann dann das COM-Objekt über die ROT auslesen und Excel dann automatisieren.https://adndevblog.typepad.com/autocad/2013/12/accessing-com-applications-from-the-running-object-table.html
Ein Hauptproblem besteht noch im Beenden von Excel, da der Application.Quit-Aufruf nicht dazu führt, dass der Prozess sich beendet. Hierzu war dann das Ermitteln der Prozess-ID und der Aufruf von "Taskkill -f -p nnnn" erforderlich.
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 5. Dezember 2019 16:35
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 9. Dezember 2019 16:56
-
Hallo,
gerade erst verg. Woche hatte ich wieder mit dem Problem zu tun. Windows Server 2019 und Office 2019, nach dem anlegen der beiden Verz. hat es funktioniert.Mit dem sauberen Beenden von Excel hatte ich damals auch immer mal wieder Probleme, aber nicht sauber reproduzierbar. Ich hatte viel hin her getestet, letztendlich beende ich EXCEL im Script nun auf diesem Weg und seit dem habe ich Ruhe.
$Excel.Quit() Remove-Variable Excel [gc]::Collect()
Beste Gruesse
brima -
Ganz einfach, als ich die Scripte die mit Excel arbeiten gebaut hatte gab es das Modul ImportExcel noch nicht, zudem ist auf den Systemen eh Excel vorhanden.
Und es gibt nicht nur EXCEL das man per PowerShell ansprechen kann, sondern z.B.: auch VISIO sehr gut geeignet zum grafischen Darstellen von GroupNesting im AD, usw.
Beste Gruesse
brima
-
Da aber von Microsoft die Automatisierung über Aufgabenplanung grundsätzlich nicht supported ist, wird man immer wieder und mit jeder neuen Version verstärkt auf Probleme dieser Art stoßen.
Auch was das Beenden von Excel angeht, so darf (wegen COM) keine Variable mehr auf den Prozess verweisen.
Dazu gehören ebenso noch geladene Workbooks wie Variablen mit Range und sonstigen Verweisen.
Erst wenn alle diese Verweise aufgelöst sind, beendet sich Excel automatisch.
Da kann schon der Aufruf eiens VBA-Makros eine Verhinderung sein, wenn dieses sich in einer globalen Variablen einen Objektverweis auf Excel-Objekte erstellt.
Application.Quit bewirkt da im Übrigen gar nichts, diese Anweisung beendet Excel nur im Dialogaufruf. -
Da aber von Microsoft die Automatisierung über Aufgabenplanung grundsätzlich nicht supported ist, ......
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Dienstag, 3. Dezember 2019 22:30
-
Also er wollte einen Tipp für sein konkretes Problem und genau einen solchen habe ich gepostet. Und das ist fuer mich auch der Sinn dieses Forums und nicht um Leute zu bekehren. :-)
Du hat ja das Modul empfohlen, also ist doch alles gut. Welcher Weg nun der bessere ist kann eh nur er selbst entscheiden, denn keiner von uns kennt die Situation in der Firma in der er arbeitet. Gibt es z.B.: Richtlinien die es untersagen, dass Community Module verwendet werden dürfen kann er mit dem Modul leider wenig anfangen usw. :-(Beste Gruesse
brima -
Das steht ja außer Frage;-).
Es ist ja halt nur so, dass es mit Microsoft Office immer schwieriger wird.
Und andere Fremdprodukte als Alternative für Excel gibt es auch schon länger.
Nur kann man da halt keine VBA-Makros verwenden, was das Leben so schön einfach machte. -
Also er wollte einen Tipp für sein konkretes Problem und genau einen solchen habe ich gepostet. Und das ist fuer mich auch der Sinn dieses Forums und nicht um Leute zu bekehren. :-)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''