1

我正在尝试使用 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

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

4

3 回答 3

1
$member = Get-ADGroupMember group1 -Recursive | where {$_.samaccountname -eq 'user1'}
if($member) {'user 1 is a member of group1'}
于 2013-06-05T14:59:59.507 回答
0

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

$user get-qaduser samAccountName $user.memberof

于 2013-06-05T22:09:14.747 回答
0

你可以这样做:

[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'
于 2013-06-05T14:07:05.707 回答