Как программно изменить Пароль Active Directory

Используйте синтаксис вызова «сценарий точечного пространства». Например, вот как это сделать, используя полный путь к скрипту:

. /path/to/set_env_vars.sh

А вот как это сделать, если вы находитесь в том же каталоге, что и скрипт:

. set_env_vars.sh

Они выполняют скрипт под текущей оболочкой вместо загрузки другой (что произойдет, если вы это сделаете ./set_env_vars.sh). Поскольку он работает в той же оболочке, заданные переменные среды будут доступны после его выхода.

Это то же самое, что и вызов source set_env_vars.sh, но он короче набирает текст и может работать в некоторых местах, где source нет.

34
задан Eric 18 September 2015 в 19:15
поделиться

3 ответа

Вы можете использовать метод UserPrincipal class ' SetPassword , если у вас достаточно прав, как только вы найдете правильный объект UserPrincipal. Используйте FindByIdentity для поиска рассматриваемого основного объекта.

using (var context = new PrincipalContext( ContextType.Domain ))
{
  using (var user = UserPrincipal.FindByIdentity( context, IdentityType.SamAccountName, userName ))
  {
      user.SetPassword( "newpassword" );
      // or
      user.ChangePassword( "oldPassword", "newpassword" );

      user.Save();
  }
}
65
ответ дан 27 November 2019 в 16:11
поделиться

Вот отличный краткий справочник по программированию Active Directory:

Howto: ( Почти) Все в Active Directory через C #

См. Код сброса пароля в конце.

public void ResetPassword(string userDn, string password)
{
    DirectoryEntry uEntry = new DirectoryEntry(userDn);
    uEntry.Invoke("SetPassword", new object[] { password });
    uEntry.Properties["LockOutTime"].Value = 0; //unlock account

    uEntry.Close();
}
18
ответ дан 27 November 2019 в 16:11
поделиться

Вот решение:

string newPassword = Membership.GeneratePassword(12, 4);    
string quotePwd = String.Format(@"""{0}""", newPassword);    
byte[] pwdBin = System.Text.Encoding.Unicode.GetBytes(quotePwd);    
UserEntry.Properties["unicodePwd"].Value = pwdBin;    
UserEntry.CommitChanges();
1
ответ дан 27 November 2019 в 16:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: