我在一个 PowerShell 脚本中有一个小的实用程序函数:
function Unzip-File{
param(
[Parameter(Mandatory=$true)]
[string]$ZipFile,
[Parameter(Mandatory=$true)]
[string]$Path
)
$shell=New-Object -ComObject shell.application
$zip = $shell.namespace($ZipFile)
$target = $shell.NameSpace($Path)
$target.CopyHere($zip.Items())
}
我应该清理脚本中的 COM 对象吗?或者 PowerShell 是否足够聪明,可以自动垃圾 COM 对象?
我已经阅读了摆脱 COM 对象(一劳永逸)并盲目应用:
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($zip)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($target)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($shell)
但我不确定这是否需要。
在本地函数中使用 COM 对象的正确模式是什么?