我正在寻找一种从Active Directory组列表中删除所有用户的方法。
例如,我有一个txt文件与一群组的名称,我想通过所有的人,并删除他们的所有用户。
一种不使用文本文件的方法也可以,但是我有大量的组需要完成这些工作,而且将来也可能需要(可能是定期的)。
这就是我现在正在处理的事情:
Set objGroup = GetObject("LDAP://CN=Finance Users,OU=Finance,DC=fabrikam,DC=com") For Each strUser in objGroup.Member objGroup.PutEx ADS_PROPERTY_DELETE, "member", Array(strUser) objGroup.SetInfo End
谢谢!
电源shell。 把所有的组放入ingroups.txt ,每行一个。 将脚本另存为.ps1文件,然后执行。
function removeAllUsersFromGroup{ Param([String]$GroupName) BEGIN { Import-Module ActiveDirectory; if ($GroupName -eq ""){ throw "No group name specified" } Write-Host "Removing users from $GroupName" -f green } PROCESS { $groupSID = (Get-ADGroup "Test Group").SID $groupMembers = Get-ADGroupMember -Identity $groupSID foreach ($member in $groupMembers){ Remove-ADGroupMember -Identity $groupSID -Member $member.SID } } END { } } Get-Content .\ingroups.txt | %{ removeAllUsersFromGroup-groupname $_}
您必须安装Windows RSAT,因为它使用Active Directory cmdlet。 如果一个组不存在,或者是空的,你会得到一些PowerShell的错误。
Const ADS_PROPERTY_CLEAR = 1 Set objGroup = GetObject("LDAP://cn=Finance Users,ou=Finance,dc=fabrikam,dc=com") objGroup.PutEx ADS_PROPERTY_CLEAR, "member", 0 objGroup.SetInfo
我用它来从某个组中删除用户。
我认为一个很好的解决scheme就是删除某个OU中所有组的成员,这样会更清洁。
编辑:
实际上,我发现了一些可能更好的方法,可能要先在testing环境中运行它,以便了解它在做什么。 或者更精通的其他人可以查看它,以确保它不会删除您环境中的每个用户或组。
' Specify Distinguished Name of OU. All users in this OU ' that are members of the specified group will be removed. strOU = "ou=Sales,ou=West,dc=MyDomain,dc=com" ' Bind to specified OU. Set objOU = GetObject("LDAP://ou=Sales,ou=West,dc=MyDomain,dc=com") ' Filter on group objects. objOU.Filter = Array("group") ' Enumerate all groups in the OU. For Each objGroup In objOU ' Enumerate all direct members of the group. For Each objMember In objGroup.Members ' Retrieve DN of parent container/OU of member. Set objParent = GetObject(objMember.Parent) strParentDN = objParent.distinguishedName ' Compare to specified OU. If (LCase(strParentDN) = LCase(strOU)) Then ' Remove the member from the group. objGroup.Remove(objMember.AdsPath) End If Next Next
尝试使用Active Directory的Windows命令行工具。 我想你要找的命令是dsrm。
我发现他们使用起来非常简单。 这些工具安装在安装了AD DS和AD LDS工具的服务器上。 在Windows Server 2008 R2上,位于Remote Server Administration Tools -> Remote Administration Tools 。 它被认为是一个function,而不是一个angular色。
要运行的命令看起来像这样:
dsrm -subtree -exclude -noprompt -c "CN=Finance Users,OU=Finance,DC=fabrikam,DC=com"
我build议首先进行testing,但是我相信这应该起作用。
有关要使用的命令行工具的更多信息,请参阅: http : //technet.microsoft.com/en-us/library/cc731865(v=ws.10).aspx
其他有用的AD命令行工具是:
dsadd dsmod dsquery dsmove
希望这可以帮助。