我正在尝试使用以下代码从 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();
}
}
}
rootRefreshDir 是包含所有 AD 组 (childDir) 的目录。
我在这里发现的是这段代码的行为不正确。它会删除用户,但在第一次运行后不会执行此操作。它确实“一些”。然后我一次又一次地运行它——这取决于需要在一个组中删除多少用户。我不确定为什么它会以这种方式运行。
有人可以帮助修复此代码或提供替代方法来删除群组中的所有用户吗?
最佳答案
您在删除项目时循环遍历项目,导致索引跳过所有其他项目。
您需要将内部 for
循环更改为向后循环,如下所示:
PropertyValueCollection members = groupDE.Properties["member"];
for (int counter = members.Count - 1; counter >= 0; counter--) {
members.RemoveAt(counter);
groupDE.CommitChanges();
groupDE.Close();
}
关于c# - 如何删除 Active Directory 组中的所有用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998905/