1

我有一个字典,其键/值是 UserPrincipal 属性。这些是从 csv 文件中读取的。此 csv 文件还具有要更新的相应 AD 用户的employeeId。目标是使用 csv 中提供的值更新 AD 中的每个用户属性。

但是,直到运行时我才知道 csv 中提供了哪些属性。

如何将每个提供的属性名称与正确的 UserPrincipal 属性进行匹配,特别是使用 DirectoryServices.AccountManagement 然后更新 / 保存

我有一种使用 Reflection 和 2.0 的 DirectoryEntry 的方法,可以让我部分地到达那里,但我仍然需要一种更新和保存的方法:

(“userToUpdate”引用了 UserPrincipal 实例,“Attributes”是从 csv 提供的键/值)

 public void UpdateAttributes(List<ADUser> users)
    {           
        // get all the UserPrincipal properties 
        List<string> userPrincipalProperties = 
            users[0].UserPrincipal.GetType().GetProperties()
            .Select(property => property.Name).ToList();

        foreach (var userToUpdate in users)
        {
            try
            {
                 foreach (KeyValuePair<string, string> attribute in userToUpdate.Attributes
                    .Where(attribute => userPrincipalProperties.Contains(attribute.Key))
                    .Where(attribute =>
                        {
                            return value.ToString() != attribute.Value;
                        }))
                {
                   //something like userToUpdate.UserPrincipal.{property-name} = attribute.Value;

                }
                // save...
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message);
            }

        }
    }
4

0 回答 0