PowerShell尝试列出具有类似字符串的组成员身份的用户

时间:2015-11-30 22:32:12

标签: powershell active-directory

我有一个函数可以帮助我在AllUsers组中获取超过20k的用户(获取ObjectClass,Name,SamAccountname,DistinguishedName)。我试图列出任何拥有CBA- *组的人,但循环似乎每个用户重复输出几次(在第一个之后),当我只想要一次迭代(许多CBA- *可能性)时。这就是我所拥有的。此外,我收到错误" Get-ADPrincipalGroupMembership:由于内部错误,服务器无法处理请求。"任何想法为什么会发生?我不确定我能看出为什么我的代码可能会重复两次,但似乎接下来的用户就好了吗?

<?php
$category = Mage::getModel('catalog/category')->load(74);

$collection = $category->getCollection();
    ->addAttributeToSelect('name')
    ->addAttributeToSelect('image')
    ->addIdFilter($category->getChildren())
    ->setOrder('name', Varien_Db_Select::SQL_DESC);

1 个答案:

答案 0 :(得分:1)

对于每次循环迭代,您继续使用加法运算符($User_MemberOf)为+=赋值,这意味着对于每个新用户,它都会被打磨&#34;与以前的用户越来越多&#39;成员资格。

要避免的两种方法:

在每次循环迭代开始时将$User_MemberOf初始化为空数组:

foreach($User in $Users){
    $User_MemberOf = @()

    Get-ADPrincipalGroupMembership -Identity $User.SamAccountName |Select -Expand Name |Where-Object {
      $_ -like 'CBA-*'
    } |ForEach-Object { 
      $User_MemberOf += $_ 
    }

    foreach($Group in $User_MemberOf){
        # export to CSV
    }
}

直接从管道分配输出:

foreach($User in $Users){
    $User_MemberOf = Get-ADPrincipalGroupMembership -Identity $User.SamAccountName |Select -Expand Name |Where-Object {
      $_ -like 'CBA-*'
    } |ForEach-Object { 
      $User_MemberOf += $_ 
    }

    foreach($Group in $User_MemberOf){
        # export to CSV
    }
}