Powershell Excel Process beenden mag nicht, Hintergrundinstanz bleibt bestehen
Aloa,
ich lese aus einem Berg von xlsm Files Daten aus.
Öffnen geht
Auslesen geht
Prozess beenden haperts, bleibt immer als Hintergrundprozess Instanz da
Die ID kommt vom Get-Process Excel.
Das Ergebnis ist das der Excel Prozess noch vorhanden ist und bei mehreren 100 Dateien wird der Taskmanager irgendwann voll. =)
Auch ein :
gibt den Speicher nicht frei.
Wie bekomme ich die Hintergrund Instanz geschlossen?
VG
ich lese aus einem Berg von xlsm Files Daten aus.
Öffnen geht
Auslesen geht
Prozess beenden haperts, bleibt immer als Hintergrundprozess Instanz da
Stop-Process -ID $_.ID -force
Die ID kommt vom Get-Process Excel.
Das Ergebnis ist das der Excel Prozess noch vorhanden ist und bei mehreren 100 Dateien wird der Taskmanager irgendwann voll. =)
Auch ein :
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)
gibt den Speicher nicht frei.
Wie bekomme ich die Hintergrund Instanz geschlossen?
VG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 391908
Url: https://administrator.de/forum/powershell-excel-process-beenden-mag-nicht-hintergrundinstanz-bleibt-bestehen-391908.html
Ausgedruckt am: 24.03.2025 um 13:03 Uhr
10 Kommentare
Neuester Kommentar

Erst mal mit
Excel selbst korrekt schließen, dann mit
Ressourcen freigeben
und noch mit
Garbage collection durchführen. Und natürlich nicht immer neue Objekte erzeugen, sondern vorhandene wiederverwenden.
Nach dem Schließen der Powershell-Konsole wird dann auch die Instanz verschwinden.
Bitte nicht die ISE zum Testen benutzen die ist mit COM Automatisierung und Office in diverser Hinsicht Buggy!
Gruß l.
$Excel.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Excel)
und noch mit
[gc]::collect()
Nach dem Schließen der Powershell-Konsole wird dann auch die Instanz verschwinden.
Bitte nicht die ISE zum Testen benutzen die ist mit COM Automatisierung und Office in diverser Hinsicht Buggy!
Gruß l.

Bidde.

Naja wie immer halt wie auch mit VBA mit einem
Am Anfang und am Ende vom Skript zurückgesetzt auf $true.
$Excel.DisplayAlerts = $false

Und die Workbooks natürlich immer schließen mit $workbook.Close($false).
Was für Dialoge sehen wir hier nicht ... VBA Dialoge von Makros?
Was für Dialoge sehen wir hier nicht ... VBA Dialoge von Makros?

Disable die Events vor dem öffnen
$Excel.EnableEvents = $false
$Excel.EnableEvents = $false