如何删除Active Directory组中的所有用户?

Mik*_*ike 3 .net c# active-directory

我正在尝试使用以下代码从AD组中删除所有用户:

private void RemoveStudents() {
        foreach (DirectoryEntry childDir in rootRefreshDir.Children) {
            DirectoryEntry groupDE = new DirectoryEntry(childDir.Path);

            for (int counter = 0; counter < groupDE.Properties["member"].Count; counter++) {
                groupDE.Properties["member"].Remove(groupDE.Properties["member"][counter]);
                groupDE.CommitChanges();
                groupDE.Close(); 
            }             
        }      
    }    
Run Code Online (Sandbox Code Playgroud)

rootRefreshDir是包含所有AD组(childDir)的目录.

我在这里发现的是这段代码行为不正确.它会删除用户,但在第一次运行后却不会执行此操作.它确实"有些".然后我再次运行它,并再次运行 - 取决于组中需要删除多少用户.我不确定它为什么会这样运作.

有人可以帮助修复此代码或提供删除组中所有用户的替代方法吗?

SLa*_*aks 5

您在删除它们时循环浏览这些项目,导致索引跳过其他所有项目.

你需要将内for循环更改为向后循环,如下所示:

PropertyValueCollection members = groupDE.Properties["member"];
for (int counter = members.Count - 1; counter >= 0; counter--) {
    members.RemoveAt(counter);
    groupDE.CommitChanges();
    groupDE.Close(); 
}  
Run Code Online (Sandbox Code Playgroud)