【发布时间】:2017-11-28 19:24:39
【问题描述】:
根据MSDN 备注,.Dispose() 必须在完成后调用System.DirectoryServices.SearchResultCollection。
由于实现限制,SearchResultCollection 类在垃圾回收时无法释放其所有非托管资源。 为防止内存泄漏,您必须在不再需要 SearchResultCollection 对象时调用 Dispose 方法。
我还读到您应该使用Foreach-Object 而不是foreach 来节省内存,因为foreach 需要将整个SearchResultCollection 保存到内存中,然后才能对其进行迭代。
$objSearcher.FindAll() | Foreach-Object { $_ }
优于
$objResults = $objSearcher.FindAll()
foreach($objResult in $objResults)
{
$objResult
}
如果你使用Foreach-Object,我不知道如何调用.Dispose()?
【问题讨论】:
标签: powershell for-loop active-directory directoryservices