我有一个PowerShell脚本,它将特定组中的所有用户作为列表(用户,用户,用户 - 其中“,”是我的列表分隔符),然后将它们添加到* .xlsx文件中(拆分后)。我想要的是检查实际的组成员是用户还是子组。
实际上,我检查每个组成员是否在我的列表中,但这个解决方案还不够好。
在我收到每个小组的成员名单时,有没有办法检查它?
修改
获取特定群组中所有成员的脚本:
Import-Module ActiveDirectory
$groups = Get-ADGroupMember "CN=${GroupName},OU=Members,OU=FolderMain,OU=Start,DC=local"
foreach($element in $groups)
{
$element.name -creplace " - [0-9]{6}",""
";"
}
此代码为我提供了一个组成员列表,如:
USERNAME,USERSURNAME; USERNAME,USERSURNAME; ......;用户名, USERSURNAME
但有些团体还包含其他团体。我想要的是检查该成员是组还是用户;当小组 - 它不应该出现在我的名单上。
答案 0 :(得分:2)
直接通过Where-Object
:
Get-ADGroupMember [...] | Where-Object { $_.objectClass -eq 'user' }
请注意,您可能需要考虑-Recursive
Get-ADGroupMember
上的Get-ADGroupMember
开关,这将启用目标群组内的用户。
另请注意,objectClass
为计算机对象提供了'Computer'
objectClass
。这与严格的LDAP不同,后者的'user'
为objectCategory
。你不必担心在这里指定{{1}}(据我所知,不能这样做。)
答案 1 :(得分:0)
Import-Module ActiveDirectory
$groups = Get-ADGroupMember "CN=${GroupName},OU=Members,OU=FolderMain,OU=Start,DC=local"
foreach($element in $groups)
{
if (!$element.Members)
{
Write-Host "Group $element.Name have no members;"
}
$element.name -creplace " - [0-9]{6}",""
";"
}