根据用户列表获取 MemberOf 列表

Grabbing a list of MemberOf based off a list of users

我目前 运行 遇到无法根据用户列表获取安全组列表的问题。麻烦主要在抢他们"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

您必须将其视为一个数组,就像您在 $companycount.

中循环一样

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

你可以使用这样的东西:

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

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

请记住,群组名称(cn 属性)可以不同于 displayName(对于通讯组列表,它是 Outlook 中显示的 displayName ),这可能与您相关,也可能不相关。另外,如果您的任何组名中有逗号,我的代码就会出现问题。