$i = 0;
while($i -lt 100)
{
$s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri '__echange__uri__' -Authentication Kerberos
Import-PSSession $s
Get-Module | where { $_.Name -match "tmp" } | Remove-Module
Get-PSSession | Remove-PSSession
$i = $i + 1
}
执行上述脚本后,powershell运行时占用的内存超过3.5 GB,除了杀死整个进程外,我无法释放此内存。我怀疑它与Import-PSSession命令有关,可能发生了内存泄漏。有没有办法释放由Import-PSSession / New-PSSession定位的内存,而不会杀死powershell.exe进程?
我使用的是Powershell v3.0。
答案 0 :(得分:0)
调用.NET垃圾收集器应该有所帮助。在结尾处添加[System.GC]::Collect()
,而循环恰好在结束括号之前。你也可以尝试Remove-Variable $s
,但它在我的环境中没有任何区别。
类似的问题:How to instruct PowerShell to garbage collect .NET objects like XmlSchemaSet?