Недостаточно памяти

У меня проблема с памятью, мне нужна помощь для powershell. Для следующего кода:

function Get-PathPermissions {
        param ( [Parameter(Mandatory=$true)] [System.String]${Path} )
process {
    $groups=$null
    $groups=@{}
    $containers = Get-ChildItem -path $Path -recurse | ? {$_.psIscontainer -eq $true}
    if ($containers -eq $null) {break}
    foreach ($container in $containers) {
        Write-Output "Container: " $container
        $accts = (Get-ACL $container.fullname).Access
        foreach($acct in $accts) {
            $acctsQADObject = Get-QADObject -Identity ([string]$acct.IdentityReference) 
            if ($acctsQADObject.ObjectClass -contains 'group') {
                $Name = $acctsQADObject.Name
                $DN = $acctsQADObject.DN

                if (!$groups.ContainsKey($Name)) {
                    Write-Output "Adding $($Name) and $($DN)"
                    $groups.add($($Name),$($DN))
                }

            }
        }
    }
    foreach ($key in $groups.GetEnumerator() | Sort-Object Name -descending) {
        dumpGroup($key.value)
    }
}                
}

Для каждого $accts петля, моя память увеличивается. Я начинаю с 1,41 ГБ, например, и он продолжает расти 1,42, 1,43 ... 3,00 ГБ +. Это не добавление к хешу групп, так как для тестирования видны только две группы. Нужно ли устанавливать $accts = $null каждый раз? Я думаю, что каждая петля создаст $accts окончен, уничтожив он предыдущий.

1 ответ

Вы можете попытаться вызвать сборку мусора после обработки каждого файла.

Другие вопросы по тегам