| Главная » Статьи » .NET » C# |
| Предположим нужно протестировать импорт большого количества. Для этого нам потребуется сгенерировать определенное количество пользователей. Сгенерированное имя пользователя будет выглядеть следующим образом: demo1, demo2... Если пользователей нужно сгенрировать больше 10-ти, то имя будет выглядеть следубщим образом: demo01, demo02... Если больше 100 то demo001, demo124... Итак предположим что пользователь каким-либо способом указывает необходимое количество записей которое нам потребуется создать, а также пользователь задает маску. Не будем вдаваться в подробности того что пользователь будет вводить запрещенные символы в маске, ограничимся тем что пользователь будет вводить нормальные строки вида : demo, test, blah и т.д. Для начала сгенрируем строку имени по маске и номеру записи: string name = string.Format("{0}" + GetFormatStringMask(1, usersNumber), mask, i); Теперь рассмотрим метод GetFormatStringMask который преобразует номер записи в необходимый формат например если записей 1000 то 5-я запись должна выглядеть как 0005. public static string GetFormatStringMask(int parameterNumber, int number) { int initial = number; int divisions = initial; string formatter = "{" + parameterNumber.ToString() + ":0"; while (true) { double d = divisions / (double)10; if (d >= 1) { formatter += "0"; } else { break; } divisions = (int)d; } formatter += "}"; return formatter; } int parameterNumber - в нашем случае он равен 1 потому что нулевой параметр это имя маски int number - номер записи Теперь мы можем в цикле генерировать новое имя. Перейдем собственно к созданию: private static void CreateUser(DirectoryEntry parent, string userName) { using (var usr = parent.Children.Add(string.Format("CN={0}", userName), "user")) { // Set the samAccountName, then commit changes to the directory. usr.Properties["samAccountName"].Value = userName; usr.CommitChanges(); } } DirectoryEntry parent - это параметр той группы куда мы собственно будем укладывать пользователей, создание выглядит примерно следующим образом DirectoryEntry parent = new DirectoryEntry( "LDAP://host/OU=TestUnit,DC=yourdomain,DC=com", "HostUserName", "HostUserPassword", AuthenticationTypes.Secure ); Настройки каждой операционной системы разные. В некоторых по умолчанию создается пользователь учетная запись которого по-умолчанию disabled. ПРИМЕЧАНИЕ : Свойство userAccountControl класса DrectoryEntry, при создании записи будут равно null, инициализировать его сразу не получится, поэтому сначала создайте запись (вызвав CommitChanges();) ActiveDirectory присвоит значения по умолчанию, по чего вы получите доступ к флагам userAccountControl Для активации учетной записи нам потребуется следующий метод: private static void Enable(string userDN) { using (var usr = new DirectoryEntry( string.Format("LDAP://host/CN={0},OU=TestUnit,DC=yourdomain,DC=com", userDN), "HostUserName", "HostUserPassword", AuthenticationTypes.Secure)) { int val = (int)usr.Properties["userAccountControl"].Value; usr.Properties["userAccountControl"].Value = val & ~(int)ActiveDs.ADS_USER_FLAG.ADS_UF_ACCOUNTDISABLE; usr.CommitChanges(); } } Ну и собственно осталось воспользоваться созданными методами: DirectoryEntry parent = new DirectoryEntry( "LDAP://host/OU=TestUnit,DC=yourdomain,DC=com", "HostUserName", "HostUserPassword", AuthenticationTypes.Secure ); int usersCreated = 0; Console.WriteLine("Creating users"); for (int i = 0; i < usersNumber; i++) { string name = string.Format("{0}" + GetFormatStringMask(1, usersNumber), mask, i); try { CreateUser(parent, name); Enable(name); usersCreated++; } catch (Exception e) { Console.WriteLine("Failed to create user {0} : {1}", name, e.Message); } } Console.WriteLine("Users created {0}", usersCreated); Список материалов: Quick List for C# Code Examples | |
| Категория: C# | Добавил: betep (26.06.2009) | |
| Просмотров: 36997 | Комментарии: 2 | Теги: | Рейтинг: 5.0/1 | |
| Всего комментариев: 1 | ||
| ||
| Меню сайта |
| Форма входа |
| Категории раздела | |||
|
| Поиск |
| Ссылки |
|
|
| Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |