【问题标题】:Using Get-ADGroup & Get-Groupmember when in multiple Groups在多个组中使用 Get-ADGroup 和 Get-Groupmember
【发布时间】:2020-06-30 20:00:32
【问题描述】:

所以我试图返回一个报告,该报告将列出他们使用的每个用户和每个组 -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 解决方案时得到的结果

【问题讨论】:

  • 您可以将-Properties MemberOf 添加到您的Get-ADUsercommand 以获取用户所属的组。

标签: powershell active-directory


【解决方案1】:

试试这个:

$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),然后我使用计算属性来格式化输出。

【讨论】:

    【解决方案2】:

    这应该可行。请注意您是否在脚本中设置了 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; 
        };
    }
    

    【讨论】:

    • 我怎样才能让每个组进入一个列,如成员 |组1 |组2 |第三组?
    猜你喜欢
    • 1970-01-01
    • 2019-08-13
    • 2011-09-12
    • 2018-01-04
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多