現象:
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 サンプルコード]