Get-AdUsers在for-each循环中,在PowerShell中附加了字符

时间:2015-10-29 12:11:14

标签: powershell foreach

我试图获得(一行)答案以获取用户列表(基于get-aduser的过滤器),然后使用该列表对其名称的扩展版本进行搜索匹配 - 例如我有:

  • UserA
  • UserB
  • UserAAdmin
  • UserBAdmin

并希望找到(当用户A被禁用时)UserAAdmin。这看起来很简单,但无论我怎么做,我似乎无法使用SAMACCOUNTNAME使用like或equals语句,即

Get-ADUser -Filter {Enabled -eq $false} -Properties sAMAccountName |
ForEach {Get-AdUser -Filter {samaccountname -like ($_.samaccountname + "Admin")}}

(至于原因,因为与我合作的客户有一个结构,所有他们的用户帐户都将ADMIN添加到他们的管理帐户的末尾,我们希望找到任何已禁用的USER帐户和找到(然后禁用)关联的管理员帐户。)

由于

2 个答案:

答案 0 :(得分:1)

如果我理解你的话,你可以尝试一下......

$DisabledUsers = Get-ADUser -Filter {Enabled -eq $false}
Foreach ($User in $DisabledUsers)
    {
    $Match = $User.SamAccountName + '*'
    $MatchedUsers = Get-AdUser -Filter {samaccountname -like $match}

        foreach ($MatchUser in $MatchedUsers)
        {
        "You Can do here what you want"
        }
    }

答案 1 :(得分:1)

Avshalom的答案是正确的,但是对你的AD两次查询是没有效率和无用的...... 获得所有已禁用的用户后,您只需过滤

即可
 $Users = Get-ADUser -Filter {Enabled -eq $false}
Foreach ($User in $Users)
    {
    $Match = "ADM-"+$User.SamAccountName
    $Users|?{$_.samaccountname -like $match}


    }