在我完成这些操作后,我是否应该释放任何这些powershell对象或管理单元?

时间:2017-04-05 14:03:23

标签: powershell

我们认为我们的PowerShell脚本可能会导致内存泄漏。我已经粘贴了下面的相关对象创建语句,我想知道我是否应该在脚本结尾处释放这些对象中的任何一个?

Add-PSSnapin VMware.VimAutomation.Core
..
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
..
$xSessionResponse = Invoke-WebRequest -Uri $xSessionURI -Headers $headers -Method POST -Body $sessionBody -ContentType $contentType
..
$VMList = Invoke-RestMethod -Uri $VMListURL -TimeoutSec 500 -ContentType "application/JSON"
..
Send-MailMessage @param

感谢任何建议 - 抱歉 - 因为我对此很陌生。

1 个答案:

答案 0 :(得分:0)

除非您的Powershell脚本完全无穷无尽,否则您不必担心内存泄漏,因为一旦父powershell.exe进程结束,所有内存都会被释放。如果它创建了任何COM对象,那么应该正确释放它们,因为它们会创建更多为它们提供服务的进程,例如创建Outlook.Application COM对象启动outlook.exe进程,该进程需要优雅地结束基于COM的方法,或者在极端情况下,Stop-Process。但是,如果它是一个泄漏的非分页(或分页)池,那么您应该检查是否将任何实例保持打开或错误终止,从而在任一池中留下路径。但是,如果您的脚本没有以管理员或系统权限运行,那么您应该永远不会因自己的操作而泄漏内核池内存。