所以我想返回一个报告,该报告将使用-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解决方案时得到的
这应该工作。只要注意是否在脚本中设置了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;
};
}
我如何将每个组放入类似于Member的列中?组1 | 第2组| 第3组?