我想从大约600个以特定字符串结尾的AD组中检索SamAccountName。
例如:
AD Groups:
AAA-BBB-XXX
CCC-DDD-XXX
EEE-FFF-XXX
现在,我想获得所有以XXX结尾的AD组的SamAccountName,以及SamAccountName和AD组之间的关系,以便我知道它们属于哪个AD组。因此:
SamAccountName | AD GROUP
------------------------------
Bernie.Sanders | AAA-BBB-XXX
Donald.Trump | AAA-BBB-XXX
Barack.Obama | AAA-BBB-XXX
Joe.Biden | CCC-DDD-XXX
我已经使用-like和-filter运算符成功地将所有XXX AD组导出到.csv。我已经使用Get-ADGroupMember和-identity运算符成功导出了所有SamAccountName。
但是,我还不能创建上面的列表,因为我是一个PS新手。我正在寻找一些"在哪里"的声明,需要一些指导。
感谢
为此,您可以使用计算属性和Select-Object
来组合;AD Group Members";用";AD组名称";。为了筛选与您的条件匹配的组,在这种情况下,以XXX结尾,您可以使用Get-ADGroup
cmdlet中的-LDAPFilter
或-Filter
。
$filter = "(samAccountName=*XXX)" # => Ends with XXX
$result = foreach($group in Get-ADGroup -LDAPFilter $filter)
{
# Here all groups ending with XXX are being enumerated
Get-ADGroupMember $group | Select-Object @{
Name = 'ADGroup'
Expression = { $group.samAccountName }
}, samAccountName, ObjectClass
}
$result | Export-Csv ....
请注意,AD组可以有成员,而不仅仅是用户,如果您希望组成员的类为";用户";您可以添加Where-Object
或.Where()
方法:
Get-ADGroupMember $group |
Where-Object { $_.ObjectClass -eq 'user' } |
Select-Object ....
(Get-ADGroupMember $group).Where({
$_.ObjectClass -eq 'user'
}) | Select-Object ....