Powershell 使用Get ADGroup&;在多个组中获取Groupmember

Powershell 使用Get ADGroup&;在多个组中获取Groupmember,powershell,active-directory,Powershell,Active Directory,所以我试图返回一个报告,列出每个用户和他们使用的每个组-过滤器“像‘废话’一样的名称” 用户可以分开多个“无聊”组,但不超过3个。我如何获得这样的输出? 成员|组1 |组2 |组3 我试过下面的方法,但不完全符合我的需要 $adgroups = Get-ADGroup -Filter "name -like '*BLAH*'" | sort name $data = foreach ($adgroup in $adgroups) { $members = $adgr

所以我试图返回一个报告,列出每个用户和他们使用的每个组-过滤器“像‘废话’一样的名称”

用户可以分开多个“无聊”组,但不超过3个。我如何获得这样的输出? 成员|组1 |组2 |组3

我试过下面的方法,但不完全符合我的需要

$adgroups = Get-ADGroup -Filter "name -like '*BLAH*'" | sort name

$data = foreach ($adgroup in $adgroups) {
    $members = $adgroup | get-adgroupmember |select name| sort name
    foreach ($member in $members) {
        [PSCustomObject]@{
            Members = $member
            Group   = $adgroup.name
                    }
    }
}

这就是我在使用@Adam Luniewski solution时得到的结果

$adgroups = Get-ADGroup -Filter "name -like '*BLAH*'" | Sort-Object Name
$data = ForEach ($adgroup in $adgroups){
  $adgroup | get-adgroupmember | Select-Object @{n='Members';e={$_}},@{n='Group';e={(Get-ADUser $_.SamAccountName -Properties MemberOf).MemberOf}}
}

这里Get ADUser用于检索用户组成员身份(首先说@Olaf),然后我使用计算属性格式化输出。

这应该行得通。请注意,如果在脚本中设置了StrictMode,如果$usrgrp count小于3,则可能会引发错误,然后必须修改此部分

# get a list of all users and groups in two columns
$dat = @(Get-ADGroup -Filter "name -like '*BLAH*'" -PipelineVariable group | Get-ADGroupMember | select @{n='UserName';e={$_.name}},@{n='GroupName';e={$group.name}})

# for each user in a list add group fields
$dat | select UserName -Unique | ForEach-Object {
    $usrgrp = @($dat | where username -eq $_.UserName | sort GroupName);
    [pscustomobject]@{
        UserName=$_.Username; 
        Group1=$usrgrp[0].GroupName; 
        Group2=$usrgrp[1].GroupName; 
        Group3=$usrgrp[2].GroupName; 
    };
}

您可以将
-Properties MemberOf
添加到
Get ADUser
命令中,以获取用户所属的组。如何将每个组添加到类似Member | Group1 | Group2 | Group3这样的列中?