コンソールなら良いのですが、PowerShell 統合スクリプト環境 (ISE) だと、Windows アプリケーションなので、元となるプロセスが終了しな いと Excel がプロセスに残ったままになります。 明示的に終了させるには、.NET プログラミングで通常行われる方法で 行いますが、作成したオブジェクトは全て $null をセットする必要が あるかもしれません ※ 作成したオブジェクト : 少なくとも左辺に置いた変数にセットした場合
$ExcelApp = New-Object -ComObject "Excel.Application" $ExcelApp.Quit() $ExcelApp = $null [System.GC]::Collect([System.GC]::MaxGeneration)
PowerShell2.0 : COM 経由で Excel のグラフを作成した後、 PDFとしてエクスポートする を ISE で実行した場合、以下の処理を 追加するとメモリから解放されました
$ExcelApp = $null $MyChart = $null $newChartObject = $null $dataRange = $null $chartObjects = $null $MySheet = $null $ExcelBook = $null [System.GC]::Collect([System.GC]::MaxGeneration)
タグ:PowerShell