删除AD Powershell脚本中的组成员身份

时间:2015-04-22 21:51:16

标签: powershell active-directory

我需要删除""成员中的群组。死帐户OU中的用户部分。

脚本运行并且不会收到任何错误,但列表中的项目根本没有更改。

#Choose Organizational Unit
$SearchBase = "OU=Dead Accounts,DC=domain,DC=domain,DC=COM"
#Choose filtering parameters
$disabledaccounts = $SearchBase.children  
#Search through each item and perform x
foreach ($userObject in $disabledaccounts){  
        foreach ($group in $userObject.memberof)  
            {  
                $group = [ADSI]"LDAP://$group"  
                $group.remove("LDAP://$($userobject.distinguishedName)")   
            }} 
但是,似乎并没有在我的环境中工作。

什么是更简单的方法来写这个,有人可以解释底部吗? (group = [ADSI]" LDAP:// $ group" etc ..)

1 个答案:

答案 0 :(得分:2)

让我们使用AD cmdts,对吗?首先,我们定义它的外观,实际上你从未在任何地方应用它......

#Choose Organizational Unit
$SearchBase = "OU=Dead Accounts,DC=domain,DC=domain,DC=COM"

然后我们得到一个位于那里的用户列表(确保包含MemberOf属性!):

$Users = Get-ADUser -filter * -SearchBase $SearchBase -Properties MemberOf

现在让我们循环浏览这些用户,对于其MemberOf属性中的每个组,我们将从该组中删除用户(-Confirm:$false开关阻止它提示您每次删除......对于像这样的剧本来说至关重要):

ForEach($User in $Users){
    $User.MemberOf | Remove-ADGroupMember -Member $User -Confirm:$false
}

我们把它们放在一起然后得到:

#Choose Organizational Unit
$SearchBase = "OU=Dead Accounts,DC=domain,DC=domain,DC=COM"
$Users = Get-ADUser -filter * -SearchBase $SearchBase -Properties MemberOf
ForEach($User in $Users){
    $User.MemberOf | Remove-ADGroupMember -Member $User -Confirm:$false
}