【问题标题】:Determining if a given user is in a given global group确定给定用户是否在给定全局组中
【发布时间】:2025-12-03 12:35:01
【问题描述】:

我正在尝试使用 PowerShell 中的 AD 模块搜索 Active Directory。我正在尝试确定给定用户是否在给定的全局组中。问题是我使用的是-match,这意味着如果用户名中包含另一个用户名,例如包含“smith_p”的“smith_pl”。用户“smith_p”将显示在该组中。

所以我的问题是:是否有更好的方法来获得 $True$False 回报,具体取决于用户是否在使用 AD 模块的给予全局组中?

如果没有

有没有办法将$ListOfmembers 的输出放入数组中,以便我可以使用-eq 而不是-match


部分脚本:

$ListOfmembers = dsquery group domainroot -name $globalgroup | 
                 dsget group -members | 
                 dsget user -samid -L

$checkMember = $False
#Search if the user is in output the list
If($ListOfmembers -match $Logonname){
    $checkMember = $True
}

ListOfmembers 输出:

samid: user05_t

samid: user23_s

samid: Admin

samid: user45_s

dsget succeeded

任何帮助将不胜感激,干杯。

【问题讨论】:

    标签: powershell active-directory dsquery


    【解决方案1】:
    $member = Get-ADGroupMember group1 -Recursive | where {$_.samaccountname -eq 'user1'}
    if($member) {'user 1 is a member of group1'}
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      [reflection.assembly]::LoadWithPartialName("System.DirectoryServices.AccountManagement")
      $username = "samaccountname"
      $ct = [System.DirectoryServices.AccountManagement.ContextType]::Domain
      $user = [System.DirectoryServices.AccountManagement.UserPrincipal]::FindByIdentity($ct, $username)
      $g =  $user.GetGroups()
      ( $g | select -expa name ) -contains 'groupname'
      

      【讨论】:

      • @RichardOsborn 很高兴为您提供帮助!
      【解决方案3】:

      您应该查看 QAD:http://www.quest.com/powershell/activeroles-server.aspx

      $user get-qaduser samAccountName $user.memberof

      【讨论】:

        最近更新 更多