温馨提示:本文翻译自stackoverflow.com,查看原文请点击:PowerShell - Using Get-ADGroup & Get-Groupmember when in multiple Groups
active-directory powershell

PowerShell - 在多个组中使用Get-ADGroup和Get-Groupmember

发布于 2020-06-04 10:39:53

所以我想返回一个报告,该报告将使用-Filter“ name- like'BLAH '” 列出每个用户和他们所在的每个组

用户可能被多个“ BLAH”组分开,但最多不超过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解决方案时得到的

查看更多

提问者
Mister.Elie
被浏览
28
Adam Luniewski 2020-03-20 01:28

这应该工作。只要注意是否在脚本中设置了StrictMode,如果$ usrgrp计数小于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; 
    };
}