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)的目录.
我在这里发现的是这段代码行为不正确.它会删除用户,但在第一次运行后却不会执行此操作.它确实"有些".然后我再次运行它,并再次运行 - 取决于组中需要删除多少用户.我不确定它为什么会这样运作.
有人可以帮助修复此代码或提供删除组中所有用户的替代方法吗?
您在删除它们时循环浏览这些项目,导致索引跳过其他所有项目.
你需要将内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)
| 归档时间: |
|
| 查看次数: |
3283 次 |
| 最近记录: |