根据用户列表获取MemberOf列表

时间:2018-10-17 14:57:25

标签: active-directory powershell-v3.0

我当前遇到一个问题,我无法根据用户列表获取安全组列表。麻烦主要在于获取他们的“ MemberOf”;因为那是它内部的数组。任何建议都会有所帮助!

以下代码:

$companycount = Get-ADUser -Properties * -Filter{(company -Like "companyname.")}

$users=@()
foreach($user in $companycount)
{
    if($user.Enabled)
    {
        $ScriptObject = New-Object PSOBJECT
        Add-Member -InputObject $ScriptObject -MemberType NoteProperty -Name Sam -Value ""
        Add-Member -InputObject $ScriptObject -MemberType NoteProperty -Name Description -Value ""
        Add-Member -InputObject $ScriptObject -MemberType NoteProperty -Name MemberOf -Value ""
        $ScriptObject.Sam = $user.SamAccountName
        $ScriptObject.Description =$user.Description
        $ScriptObject.MemberOf = $user.MemberOf
        $users+=$ScriptObject
    }
}
$users|export-csv

1 个答案:

答案 0 :(得分:0)

您必须像对待数组一样对待它,就像您遍历$companycount

请记住,MemberOf是每个组的distinguisedName属性的数组。但是该组的名称是distinguisedNameCN部分)的一部分,因此您可以使用Substring()来提取它。

您可以使用类似这样的内容:

$ScriptObject.MemberOf = ($u.MemberOf | ForEach { $_.Substring(3, $_.IndexOf(",") - 3) }) -Join ", "

这将为您提供一个逗号分隔的组名称列表。

请记住,组的名称(cn属性)可以与displayName不同(对于通讯组列表,Outlook中显示的是displayName),可能与您无关或无关。另外,如果您的任何组名中都包含逗号,那么我的代码也会引起问题。