【问题标题】:Check if AD User was part of the AD Group which could be in its sub group检查 AD 用户是否属于可能在其子组中的 AD 组
【发布时间】:2014-04-08 16:14:03
【问题描述】:

我想查询一个用户他是否是组的一部分,这里的问题是.. 有时很难确定它是否是组的一部分,因为他可能在组子组的多个级别。

如果我想检查用户是否在“所有销售用户”中的示例。 他可能在“所有销售用户”>“美国销售”>“SJ 销售”>“产品 A”>“项目 B”的子组中

问题是,我必须打开所有子组才能搜索他。我如何知道他是否属于“所有销售用户”?最好是查询可以显示层次结构。

我尝试了 PowerShell,但它只显示 memberof。不知道如何提供帮助。

【问题讨论】:

  • 您在 Powershell 中尝试了什么?您使用的是 ActiveDirectory 模块还是 ADSI?

标签: powershell command-line vbscript cmd


【解决方案1】:

递归 Powershell 实现,假设您安装了 ActiveDirectory Powershell 模块。它将返回用户所属的所有组的通用名称,包括嵌套,因此在您的示例中将返回所有 5 个组。

function findGroup($n){
    $g = Get-ADGroup $n;
    $parents = Get-ADGroup -Filter {Members -eq $g.DistinguishedName}
    if($parents -eq $null){
        return $g.Name;
    }
    else{
        $g.Name;
        $parents | % { findGroup $_ }
    }
}

以及利用第一个功能的第二个功能:

function findUsersGroup($userName){
    $u = (Get-ADUser $userName -Properties memberof).memberof
    $u | % { findGroup $_}
}

因此,如果您将上述 2 个函数粘贴到您的 powershell 窗口中,您就可以运行

PS C:\> findUsersGroup raf

这将返回用户所属的组列表,包括层次结构:

insideinsidetopgroup
insidetopgroup
topgroup
othergroup

【讨论】:

  • 看来这个脚本可以加载所有的 memberof 并且现在应该很好:)
【解决方案2】:

你可以试试LDAP with Powershell

$strFilter = "(&(memberOf:1.2.840.113556.1.4.1941:={0})(objectCategory=person)(objectClass=user)(sAMAccountName={1}))"

$objDomain = New-Object System.DirectoryServices.DirectoryEntry

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"

$colProplist = "name"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

$colResults = $objSearcher.FindAll()

foreach ($objResult in $colResults)
    {$objItem = $objResult.Properties; $objItem.name}

{0}是嵌套组,应该是专有名称

{1} 是您想要的用户 sAMAccountName(您可以在 (sAMAccountName={1}) 中使用除 sAMAccountName 之外的任何其他用户属性)

【讨论】:

    猜你喜欢
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    相关资源
    最近更新 更多