我需要删除""成员中的群组。死帐户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 ..)
答案 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
}