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

标签 c# .net 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(); 
            }             
        }      
    }    

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/

相关文章:

active-directory - 使用 UPN 格式的 samAccountName 进行身份验证

java - 使用 Active Directory 在 android 中进行单点登录

c# - 如何使用 C# 查找下一个空白行并将表单数据导出到 Excel

c# - 关键字 'event' 在 C# 中是可选的吗?

c# - 使用 SqlDataReader 获取二进制数据

c# - 使用 IDataErrorInfo 验证整个对象

powershell - 导入用户列表 - 导出用户和组列表

c# - 如何从常规(非商店)Win32 .NET 应用程序中使用 Windows.UI 命名空间?

c# - Windows 窗体计时器不会停止。这怎么可能?

.net - 您将如何改进我们的未处理异常处理程序错误消息?