AD Group会员删除脚本无法100%工作 - 需要帮助

时间:2017-05-11 18:44:48

标签: powershell active-directory

我首先要说的是我根本不是脚本专家。但我的任务是在几个月前创建一个脚本来删除指定OU(称为DISABLE)中所有用户的所有组成员身份。

长话短说,剧本大部分时间都很有效,但在随机的情况下,它不会为用户删除1(随机)组,或2,有时甚至更多,我不能找出原因是什么。使用的脚本是:

#Remove User Group Memberships
$ou = Get-ADUser -SearchBase "OU=DISABLE,OU=CE,DC=ourdomain,DC=org" -Filter *
foreach ($user in $ou) {
$UserDN = $user.DistinguishedName
$user.PrimaryGroupID = 513
set-aduser -instance $user
Get-ADGroup -LDAPFilter "(member=$UserDN)" | foreach-object {
if ($_.name -ne "Domain Users") {remove-adgroupmember -identity $_.name -
member $UserDN -Confirm:$False} }
}

非常感谢您提供的任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

不是搜索用户,而是搜索用户所属的所有组,而只是在第一次搜索中包含该用户。这样可以减少AD搜索次数,减少AD搜索错过用户的可能性。

#Remove User Group Memberships
$ou = Get-ADUser -SearchBase "OU=DISABLE,OU=CE,DC=ourdomain,DC=org" -Filter * -Property MemberOf
foreach ($user in $ou) {
    $UserDN = $user.DistinguishedName
    $user.PrimaryGroupID = 513
    set-aduser -instance $user
    $user.MemberOf | 
        Where{$_ -notmatch "Domain.?Users"} | 
        ForEach {remove-adgroupmember -identity $_ -member $UserDN -Confirm:$False}
}

尝试一下,看看你是否能获得更好的里程数。另外,请考虑其中一些可能是受保护的组,并且您运行该脚本的帐户不具有影响这些组的权限。检查这些未被从组中删除的用户,看他们是否将AdminCount属性设置为1。