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:
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:
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
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 fr 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 fr 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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2825840895
Url: https://administrator.de/contentid/2825840895
Ausgedruckt am: 21.11.2024 um 19:11 Uhr
7 Kommentare
Neuester Kommentar
Moin,
Steht doch da ganz klar:
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
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
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
Grüße Uwe
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
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
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.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.