springstil
Goto Top

Fehler mit Powershell und Ausführung

Hallo zusammen,

ich habe ein Skript was mir Anhänge einer Email abholt. Die Anhänge sind in XLSX. Diese möchte ich in CSV umwandeln. Das ganze mach ich mit Powershell und das Funktioniert auch soweit:


Umwandeln tue ich das mit:
$sourceFile = Get-ChildItem -Path "\\10.173.45.12\sog\Scripte\Email_Skript\DSV\Download" -Filter "DE2 Shipment*.xlsx" -File | select -F 1 -Expand Fullname  
$targetFile = '\\10.173.45.12\sog\Scripte\Email_Skript\DSV\CSV\DSVDaten1.csv'  


$excelwb = New-Object -ComObject excel.application
$workbook = $excelwb.Workbooks.Open($sourceFile)
$workbook.SaveAs($targetFile,6)
$workbook.Close($false)
$ExcelWB.quit()


Wenn ich das auf dem Server oder auch bei mir am Rechner ausführe ist das ganze kein Problem und läuft super. ABER ich habe dies in unserem ERP in einem Job liegen der das zeitgesteuert ausführen soll.

Und genau das funktioniert nicht wie es soll, es bricht mit der Meldung:

 Die Open-Eigenschaft des Workbooks-Objektes kann nicht zugeordnet werden.                            | (SOGERPSrv/ReadProcErrorThread)
In \\server-app\sog\Scripte\Email_Skript\DSV\script.ps1:118 Zeichen:1                                | (SOGERPSrv/ReadProcErrorThread)
 + $workbook = $excelwb.Workbooks.Open($sourceFile)                                                   | (SOGERPSrv/ReadProcErrorThread)
 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                   | (SOGERPSrv/ReadProcErrorThread)
 + CategoryInfo          : OperationStopped: (:) , COMException                                 | (SOGERPSrv/ReadProcErrorThread)
 + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException                            | (SOGERPSrv/ReadProcErrorThread)
 Es ist nicht m”glich, eine Methode fr einen Ausdruck aufzurufen, der den NULL hat.                  | (SOGERPSrv/ReadProcErrorThread)
 In \\server-app\sog\Scripte\Email_Skript\DSV\script.ps1:119 Zeichen:1                                | (SOGERPSrv/ReadProcErrorThread)
 $workbook.SaveAs($targetFile,6)                                                                    | (SOGERPSrv/ReadProcErrorThread)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                    | (SOGERPSrv/ReadProcErrorThread)
+ CategoryInfo          : InvalidOperation: (:) , RuntimeException                             | (SOGERPSrv/ReadProcErrorThread)
+ FullyQualifiedErrorId : InvokeMethodOnNull                                                     | (SOGERPSrv/ReadProcErrorThread)
 Es ist nicht m”glich, eine Methode fr einen Ausdruck aufzurufen, der den NULL hat.                  | (SOGERPSrv/ReadProcErrorThread)
 In \\server-app\sog\Scripte\Email_Skript\DSV\script.ps1:120 Zeichen:1                                | (SOGERPSrv/ReadProcErrorThread)
+ $workbook.Close($false)                                                                            | (SOGERPSrv/ReadProcErrorThread)
 ~~~~~~~~~~~~~~~~~~~~~~~             

einfach ab. Andere Skripte die ich mit Powershell nutze laufen allerdings ohne Probleme. Ich werde allerdings aus dem Fehler nicht schlau woran es liegt und hoffe das mir jemand helfen kann face-smile

Content-ID: 2825840895

Url: https://administrator.de/contentid/2825840895

Ausgedruckt am: 21.11.2024 um 19:11 Uhr

Doskias
Doskias 18.05.2022 um 11:49:46 Uhr
Goto Top
Moin,

Steht doch da ganz klar:
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat

Soweit ich es in deinem Code sehe nutzt du $targetFile und $false ohne ihnen ein Wert zuzuordnen. Daher ist de Ausdruck NULL, woher die Fehlermeldung resultiert. Wenn das nur ein Teil des Codes sein sollte, dann bitte alles psoten.

Gruß
Doskias
Springstil
Springstil 18.05.2022 um 11:54:28 Uhr
Goto Top
Zitat von @Doskias:

Moin,

Steht doch da ganz klar:
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat

Soweit ich es in deinem Code sehe nutzt du $targetFile und $false ohne ihnen ein Wert zuzuordnen. Daher ist de Ausdruck NULL, woher die Fehlermeldung resultiert. Wenn das nur ein Teil des Codes sein sollte, dann bitte alles psoten.

Gruß
Doskias

Habe ich gerade angepasst. Hab den rest nur weggelassen wo ich später dann die CSV Datei bearbeite und wie ich die abhole damit es übersichtlicher bleibt, das hat ja mit der Stelle nichts weiter zu tun face-smile
colinardo
Lösung colinardo 18.05.2022 aktualisiert um 13:19:44 Uhr
Goto Top
Servus.
Als erstes stelle sicher das der Account der das Skript ausführt auch entsprechenden Lese/Schreib-Zugriff auf den Netzwerkpfad hat. Des weiteren muss man beachten das Office COM-Automation über Task-Scheduler etwas tricky ist und man muss hier beachten das Ordner im System Profile erstellt werden müssen damit es nicht zu Fehlern kommt. Der Fehler oben sieht nämlich sehr danach aus.

Per Batch in Aufgabeplanung XLS in CSV umwandeln
Windows Aufgabe wird nicht ausgeführt in Aufgabenplanung

ABER ich habe dies in unserem ERP in einem Job liegen der das zeitgesteuert ausführen soll.
Des weiteren könnte es auch sein das die Taskausführung deines ERP nicht kompatibel mit COM-Automation mit den Office-COM Controls ist. Wie das dein ERP macht können wir hier mangels Angaben nicht sagen.

Grüße Uwe
manuel-r
manuel-r 18.05.2022 um 13:47:00 Uhr
Goto Top
Wenn ich das auf dem Server oder auch bei mir am Rechner ausführe ist das ganze kein Problem und läuft super. ABER ich habe dies in unserem ERP in einem Job liegen der das zeitgesteuert ausführen soll.

Und auf der Maschine die das Script letztlich ausführt ist auch ein Office installiert? Das ist nämlich Vorausetzung wenn ich mich nicht irre.

Manuel
colinardo
colinardo 18.05.2022 aktualisiert um 13:59:56 Uhr
Goto Top
Zitat von @manuel-r:
Und auf der Maschine die das Script letztlich ausführt ist auch ein Office installiert? Das ist nämlich Vorausetzung wenn ich mich nicht irre.
Ja, sollte hier aber der Fall sein denn sonst würde schon bei der Erzeugung des Excel Com-Objekts ein Fehler geworfen.
Springstil
Springstil 18.05.2022 um 14:12:37 Uhr
Goto Top
Zitat von @colinardo:

Servus.
Als erstes stelle sicher das der Account der das Skript ausführt auch entsprechenden Lese/Schreib-Zugriff auf den Netzwerkpfad hat. Des weiteren muss man beachten das Office COM-Automation über Task-Scheduler etwas tricky ist und man muss hier beachten das Ordner im System Profile erstellt werden müssen damit es nicht zu Fehlern kommt. Der Fehler oben sieht nämlich sehr danach aus.

Per Batch in Aufgabeplanung XLS in CSV umwandeln
Windows Aufgabe wird nicht ausgeführt in Aufgabenplanung

ABER ich habe dies in unserem ERP in einem Job liegen der das zeitgesteuert ausführen soll.
Des weiteren könnte es auch sein das die Taskausführung deines ERP nicht kompatibel mit COM-Automation mit den Office-COM Controls ist. Wie das dein ERP macht können wir hier mangels Angaben nicht sagen.

Grüße Uwe

Und wieder einmal bist du mein Held!!

Das mit dem R/W Berechtigung hab ich alles schon gecheckt gehabt daran lag es leider nicht. Aber die Sache mit der Office COM-Automation habe ich absolut nicht gewusst und genau das hat mich nun zum Erfolg geführt. VIELEN DANK!!! Es klappt face-smile
colinardo
colinardo 18.05.2022 um 17:06:00 Uhr
Goto Top
👍 .