如果用户帐户的“标题”更改,我正在尝试使用PowerShell从安全组中删除用户。
我想获取Development Team
安全组的所有成员,并且如果该组的成员的标题不是Developer
,请从该组中删除该用户。
这只是一个示例,将用于基于标题的基于角色的组维护。如果用户的标题发生更改,则其组成员身份将通过此计划脚本进行更改。
此脚本将删除组中的所有成员,而不仅仅是用户标题不等于Developer
的成员。如何修改脚本以仅删除标题不等于Developer
的用户?
Import-Module ActiveDirectory
$groupname = 'Development Team'
$members = Get-ADGroupMember -Identity $groupname
foreach($member in $members)
{
if($member.title -notlike 'Developer')
{
Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
}
}
根据下面LisaJ的信息,这是新脚本的外观。有效!
Import-Module ActiveDirectory
$groupname = 'Development Team'
$members = Get-ADUser -LDAPFilter "(&(!(title=Developer))(memberOf=cn=Development Team,ou=Security Groups,dc=domain,dc=com))"
foreach($member in $members)
{
Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
}
答案 0 :(得分:1)
标题不是与get-adgroupmember返回的属性,因此所有$ member.title值都不是“ Developer”,因为该值始终为null。我将使用LDAP过滤器
Get-ADUser -LDAPFilter "(&(!(title=Developer))(memberOf=cn=Development Group,ou=groups,dc=example,dc=com))"
标识需要从组中删除的帐户。此过滤器返回一组用户,这些用户 是“开发组”组的成员(您需要该组的适当的标准DN),但其标题不是“ Developer”。在那些上使用您的foreach来删除adgroupmember。
您还可以使用
在用户的标题变为开发人员时将其置入组中Get-ADUser -LDAPFilter "(&(title=Developer)(!(memberOf=cn=Development Group,ou=groups,dc=example,dc=com)))"
标识所有不是“开发组”成员且标题为“开发人员”的帐户。