Import-PSSession - 泄漏内存

时间:2014-05-21 08:20:02

标签: powershell memory-leaks exchange-server

$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。

1 个答案:

答案 0 :(得分:0)

调用.NET垃圾收集器应该有所帮助。在结尾处添加[System.GC]::Collect(),而循环恰好在结束括号之前。你也可以尝试Remove-Variable $s,但它在我的环境中没有任何区别。

类似的问题:How to instruct PowerShell to garbage collect .NET objects like XmlSchemaSet?