2018年8月11日土曜日

Powershell で Excelの操作を行った場合、excel のプロセスが残る件

現象:
Powershell で Excel により操作し、操作が終了しても以下のとおりプロセスが残る場合があります。オブジェクトを確保した場合、Excelを終了してもその確保したオブジェクトが残存しているようです。
tasklist コマンドで確認すると、以下の通り excel.exeのプロセスが残留しているのが分かります。

C:\>tasklist | findstr -i excel
EXCEL.EXE                     xxxx RDP-Tcp#7                  2     51,644 K


解決方法:
コードの中で変数を定義したら開放する必要あります。

例えば$excel、$book、$sheet変数を定義したら以下のように確保したオブジェクトをリリースします。

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($book)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($sheet)


その他便利な Powershell のサンプルコマンドを紹介します。

■[PowerShell サンプルコード]