Powershell 使用Get ADGroup&;在多个组中获取Groupmember
所以我试图返回一个报告,列出每个用户和他们使用的每个组-过滤器“像‘废话’一样的名称” 用户可以分开多个“无聊”组,但不超过3个。我如何获得这样的输出? 成员|组1 |组2 |组3 我试过下面的方法,但不完全符合我的需要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
$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这样的列中?