首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >记忆被吞噬的问题

记忆被吞噬的问题
EN

Stack Overflow用户
提问于 2012-08-16 13:54:02
回答 1查看 193关注 0票数 0

我试图通过NAS共享上的目录/子目录的广泛结构递归地查找文件夹上的组及其可分辨的名称(DN)。

我编写了代码,它可以工作,但由于某种原因,它速度慢,占用内存。

--我正在寻求帮助,以了解我可能做错了什么,或者如果有一种更快/更少内存密集型的方法来做到这一点。

  • 它似乎放慢了每个$acct的速度,并使用Get-QADObject创建了$acctsQADObject
  • 我看到每个容器(目录)都有8-10个$acct,处理每个容器需要大约5秒或更长时间。
  • 似乎$acct的每一次迭代都在缓存一些它没有发布的东西,因此您可以看到$acct的每一个循环都会看到0.02+ MB增加内存。
  • 我从$acct中弹出了$accts,并试图强迫$acctsQADObject$null来尝试清除一些内存。不过,这似乎一点帮助都没有。然后将$groups哈希转移到另一个函数中,以获取每个组的用户,但我认为这很好。

备注: Get-QADObject来自quest.com,他们的论坛似乎很安静,所以我希望在这里找到帮助。

我现在的代码是:

代码语言:javascript
复制
    $containers = @(Get-Item -Path $Path | ? {$_.psIscontainer})
    $containers += Get-ChildItem -Path $Path -Recurse | ? {$_.psIscontainer}

    if ($containers -eq $null) {break}
    while ($containers) {
        $container,$containers = $containers
        Write-Output "Container: " $container
        $accts=$null
        $accts=@()
        $accts = @((Get-ACL $container.fullname).Access)
        while ($accts) {
            $acct,$accts = $accts
            $acctsQADObject = $null
            $acctsQADObject = Get-QADObject -PageSize 1000 -DontUseDefaultIncludedProperties -SizeLimit 0 -Identity ([string]$acct.IdentityReference) 
            if ($acctsQADObject.ObjectClass -contains 'group') {
                $Name = $acctsQADObject.Name
                $DN = $acctsQADObject.DN
                $key = "$($Name)|$($DN)"
                if (!$groups.ContainsKey($key) -and $key -notcontains "Group|Member") {
                    Write-Output "Found first reference to a group: $($DN) assigned to directory $container"
                    $msg += "Found first reference to a group: $($DN) assigned to directory $container `n"
                    $groups.add($key,$DN)
                }
            }                           

        }
    }
EN

回答 1

Stack Overflow用户

发布于 2012-08-17 14:43:26

为什么不使用Get-QADGroup而不是Get-QADObject呢?这样你就能得到一个团队。然后,您可以从它中提取DN属性。我编写了一些代码,这些代码对于文件夹审计很有用,听起来像是你想要做的。它可以在另一篇文章here中找到。要获得组成员,可以使用Get-QADGroupMember $groupname -Indirect

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11988726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档