Migrated from old website (first published Oct 13, 2017)
Recently, with a restricted Server 2003 domain controller with PowerShell 1.0, I had to export the users to import them into another Server 2003 (I know, normally I would say DON’T DO IT! but it is a special system that has no external connection and the software only works with level 2003).
Since PowerShell 1.0 has not given the command Get-ADUser and an installation of additional tools was not possible, I have carried out the export of the users via ADSI using a PowerShell script and saved the user data in a CSV, which can be imported on the other server.
That you don’t have to search and tinker, you can copy the content below and paste in a notepad, then save it as Get-UserExportADSI.ps1.
<# .SYNOPSIS Collects users and attributes of this users and write/export it to a CSV file. Adrian Dolder - DOUDISBLOG THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER. Version 1.0, 2016-03-16 Ideas, comments and suggestions to script.feedback@doudi.ch Please give the information about the Scriptname, Version and the Developer. .LINK - .DESCRIPTION This script collects and exports from ADSI the users of a specified OrganizationalUnit and takes the attributes, then write all the information to a CSV file. The script exports/writes the information to a CSV file unter C:\temp named userexport.csv The search scope is set to the subtree. If you want to set the search scope to OneLevel, you need to set a # in front of the line $objSearch.SearchScope = [System.DirectoryServices.SearchScope]::Subtree and delete the # on the line #$objSearch.SearchScope = [System.DirectoryServices.SearchScope]::OneLevel .NOTES Requirements - Windows Server 2003 - PowerShell 1.0 - Domain Admin rights Revision History -------------------------------------------------------------------------------- 1.0 Initial community release .PARAMETER - .EXAMPLE .\Get-UserExportADSI.ps1 #> # Define the path and file for the export $csvPath = 'C:\temp\userexport.csv' # Define the OrganizationalUnit (subtree will be searched, can be changed to OneLevel) $OU = 'ou=OrganizationUnit,dc=Domain,dc=local' $objSearch = New-Object System.DirectoryServices.DirectorySearcher $objSearch.PageSize = 15000 $objSearch.Filter = "(&(objectCategory=User)(objectCategory=Person))" $objSearch.SearchRoot = "LDAP://$OU" $objSearch.SearchScope = [System.DirectoryServices.SearchScope]::Subtree #$objSearch.SearchScope = [System.DirectoryServices.SearchScope]::OneLevel # Definition of what will be exported $allUsers = $objSearch.FindAll() $all = @() foreach ($user in $allUsers) { $o = $user.GetDirectoryEntry() $propertyHT = @" Username = $($o.SamAccountName.toString()) Vorname = $($o.Givenname.ToString()) Nachname = $($o.sn.toString()) Initialien = $($o.initials.toString()) Rufnummer = $($o.telephoneNumber.toString()) E-Mail = $($o.mail.toString()) Webseite = $($o.wWWHomePage.toString()) Straße = $($o.streetAddress.toString()) Ort = $($o.l.toString()) PLZ = $($o.postalCode.toString()) Nummer Privat = $($o.HomePhone.toString()) Nummer Pager = $($o.pager.toString()) Nummer Fax = $($o.facsimileTelephonenumber.toString()) Position = $($o.Title.toString()) Abteilung = $($o.Department.toString()) Firma = $($o.Company.toString()) Vorgesetzter = $(if($o.Manager -ne $null){$o.Manager.toString().Split(",")[0].Substring(3)}) Mitarbeiter= $o.directReports.toString() "@ $all += new-Object PSObject -Property (ConvertFrom-StringData -StringData $propertyHT) } # write the CSV file $all | export-csv $csvPath -Delimiter ";" -NoTypeInformation -Encoding UTF8 -Force
Export Users, Groups and OU’s from one Windows 2003/2008 Active Directory Domain to other Windows 2003/2008 Active Directory Domain
One of our engagement with client, client wants to upgrade of Windows 2003 Domain Controller to Windows 2008 R2 Domain Controller and to assure that once upgrade, application integrated with Active Directory will have no impact, we want it to test with Windows 2008 R2 Active Directory Domain. We deploy one fresh Windows 2008 R2 Domain from scratch. The next is to create users, groups OU structure similar to the production environment. So we thought to use LDAP export and import to do that. We have to first import OU, then Users and last Groups. Here are steps we followed to achieve the same.
1. Export OU structure from Windows 2003 DC and import it in Windows 2008 R2 Domain Controller
a. To export users, login with Domain Admin credential to Windows 2003 DC and run below command
ldifde -f ExportOu.ldf -s DCservername -d “dc=domain,dc=com” -p subtree -r “(objectCategory=organizationalUnit)” -l “cn,objectclass,ou” -c fromDN ToDN
Where ExportOU.ldf: file name
DCservername: Domain Controller Name
fromDN: Source Domain Name
ToDN: Destination Domain Name
b. Copy File ExportOu.ldf to Windows 2008 R2 Domain Controller
c. Login to Windows 2008 R2 DC with Domain Admin credential
d. To import OU structure, run below command
ldifde -i -f ExportOu.ldf -k -s DCservername
Where ExportOU.ldf: file name
DCservername: Domain Controller Name
e. Confirm OU structure is similar to Windows 2003 Active Directory Domain
2. Export Users from Windows 2003 DC and import it in Windows 2008 R2 Domain Controller
a. To export users login to Windows 2003 DC and run below command
ldifde -f ExportUser.ldf -s DCservername -d “dc=domain,dc=com” -c “dc=domain,dc=com” “DC=destination,DC=com” -p subtree -r “(&(objectCategory=person)(objectClass=User)(givenname=*))” -l “cn,givenName,objectclass,samAccountName,memberof” –c fromDN ToDN
Where ExportUser.ldf: file name
DCservername: Domain Controller Name
fromDN: Source Domain Name
ToDN: Destination Domain Name
b. Copy File ExportUser.ldf to Windows 2008 R2 Domain Controller
c. Login to Windows 2008 R2 DC with Domain Admin credential
d. To import Users, run below command
ldifde -i –f ExportUser.ldf -k –s DCservername
Where ExportUser.ldf: file name
DCservername: Domain Controller Name
e. Confirm users are imported successfully
3. Export Groups from Windows 2003 DC and import it in Windows 2008 R2 Domain Controller
a. To export Groups login to Windows 2003 DC and run below command
ldifde -f ExportGroup.ldf -s DCservername -d “dc=domain,dc=com” -c “dc=domain,dc=com” “DC=destination,DC=com” -p subtree -r “(&(objectCategory=group)(objectClass=group))” -l “cn,givenName,objectclass,member,memberof,managedby” –c fromDN ToDN
Where ExportGroup.ldf: file name
DCservername: Domain Controller Name
fromDN: Source Domain Name
ToDN: Destination Domain Name
b. Copy ExportGroup.ldf File to Windows 2008 R2 Domain Controller
c. Login to Windows 2008 R2 DC with Domain Admin credential
d. To import groups, run below command
ldifde -i –f ExportGroup.ldf -k –s DCservername
Where ExportOU.ldf: file name
DCservername: Domain Controller Name
e. Confirm users are imported successfully
4. Enable all users and reset the password
a. When you import users, it will be in disabled state. To enable it, right click saved queries and define new query. Give query name and click on define query. Click users and select ‘Disabled Accounts’. Click OK
b. Select all users and click on Enable Account
c. Select all users and click on Properties, Select Account and select check box for Users must change password at next logon, and click OK
d. To reset password for users, use below command
dsquery user -samid | dsmod user -pwd
Now you can ask users to login and test application J
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика — тотальный контроль над каждым совершённым тактом, а значит — безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
Introduction to CSVDE Import
The purpose of this page is to show you how to bulk import user accounts into Active Directory. Here are scenarios where CSVDE will save you work:
- To create hundreds of new users in a Windows Server 2003 or 2000 domain.
- To import hundreds of NT 4.0 users into a brand new Active Directory domain.
- To migrate directory services from Exchange 5.5 into Active Directory.
Topics for CSVDE Import User Accounts
-
Why begin with Export?
-
Import examples
-
Troubleshooting
♦
Export Examples
Why Begin with Export?
When you use CSVDE -i to import user accounts, you make changes that will be difficult to reverse. For instance, you may import unsuitable usernames, but then you cannot find those users in Active Directory. In frustration, you delete existing users as well as the imported test accounts. In export mode, you can do no harm to Active Directory, also CSVDE -f filename.csv will help build up your understanding of the switches.
Import Examples
The secrets of successful importing are:
1) Practice with export first! So that you learn the switches, and obtain the precise spelling of LDAP fields, for example sAMAccountName is correct, sAMAaccountNames has two mistakes and would cause the import to fail.
2) Create a good .CSV file. Master the LDAP fields in the first row.
3) Use VBScript to enable accounts and set the password. This overcomes the main limitation of CSVDE namely that you cannot import passwords, nor can you alter accounts in anyway. See here for a VBScript to reset passwords.
Mastering bulk import will save you time when you need to create hundreds of user accounts. CSVDE would be the method of choice if you have the users in a spreadsheet.
Guy Recommends: SolarWinds’ Free Bulk Import Tool
Import users from a spreadsheet. Just provide a list of the users with their fields in the top row, and save as .csv file. Then launch this FREE utility and match your fields with AD’s attributes, click and import the users.
Optionally, you can provide the name of the OU where the new accounts will be born. Download your FREE bulk import tool.
If you need more comprehensive software, download a free trial of SAM (Server & Application Monitor)
Example 1: Importing data with -i -f filename
To import a file into Active Directory use the CSVDE -i which tells it to import. -f users.csv is the filename. So the complete command is CSVDE -i -f users.csv Note the space between the command and each switch. The first line, referred to as the header, should have a list of the field names. For example, DN, FirstName, Surname.
Preparation: Open the text file with the users, and add LDAP attributes to the top row.
Command: CSVDE -i -f usersi.csv
Example 2: Using the -k to force an import
Command: CSVDE -i -k -f usersi.csv
Example 3: A CSV file with the LDAP attributes in the top row.
Preparation: If you wish to use this example below, firstly copy and paste it into notepad. Then change the attributes to match your circumstances. For example, change WonderDom to your domain name, and change the OU=Worcester to OU=yourOU.
I suggest importing the file into Excel, making your changes, then exporting it as a .CSV file.
dn,sAMAccountName,userPrincipalName,telephoneNumber,department,userAccountControl,objectClass
«CN=Peter Graham,OU=Worcester,DC=WonderDom»,Peterg,[email protected],891-1239,Production,512,user
«CN=Janie Bourne,OU=Worcester,DC=WonderDom»,Janieb,[email protected],891-1239,Production,512,user
«CN=Edgar Dunn,OU=Worcester,DC=WonderDom»,Edgard,[email protected],891-1230,Production,512,user
«CN=Belinda Hart,OU=Worcester,DC=WonderDom»,Belindah,[email protected],891-1231,Production,512,user
«CN=May Jamieson,OU=Worcester,DC=WonderDom»,Mayj,[email protected],891-1232,Production,512,user
«CN=Leroy Ota,OU=Worcester,DC=WonderDom»,Leroyo,[email protected],891-1233,Production,512,user
Command CSVDE -i -k -f user3.csv
Recommended: Solarwinds’ Permissions Analyzer – Free Active Directory Tool
I like thePermissions Analyzer because it enables me to see WHO has permissions to do WHAT at a glance. When you launch this tool it analyzes a users effective NTFS permissions for a specific file or folder, and takes into account network share access, then displays the results in a nifty desktop dashboard!
Think of all the frustration that this free SolarWinds utility saves when you are troubleshooting authorization problems for user’s access to a resource. Give this permissions monitor a try – it’s free!
Download SolarWinds’ Free Permissions Analyser – Active Directory Tool
Troubleshooting
- Check that you understand LDAP attributes and syntax: DC=domain, DC=COM.
- Make sure that Excel is not open at the .csv you are trying to create.
- Take care with your Find and Replace.
- Check out the Error Messages.
- Use the log switch: -j C:\
- Experiment with different syntax. Try a different output filename.
- Contact Guy Thomas – see email address below.
See Also
- CSVDE Export Examples
- CSVDE Import Advanced
- CSVDE Home
- Troubleshooting CSVDE Errors
- CSV Import Active Directory – Free Tool
Инструмент для миграции учетных записей и паролей
Microsoft выпустила Active Directory Migration Tool (ADMT) 2.0 в качестве дополнения к Windows Server 2003, и большинство администраторов воспринимают его как средство для осуществления перехода от одной версии Windows к другой. ADMT — предпочтительный инструмент миграции с прежних версий Windows на Windows 2003 или Windows 2000 Server для крупных организаций. Однако следует уточнить, что ADMT проектировался для переноса схемы Active Directory (AD) из одного леса в другой, независимо от того, меняется ли при этом версия операционной системы. ADMT обеспечивает не только переход с Windows NT 4.0 на AD, но и миграцию между лесами (консолидацию доменов, распределенных по отдельным лесам) и внутри лесов (миграции доменов, составляющих часть одного леса).
В ADMT 2.0 появилось несколько новых функций, в том числе интерфейс командной строки и усовершенствованный интерфейс для работы с Microsoft Exchange Server. Кроме того, ADMT 2.0 обеспечивает миграцию паролей учетных записей пользователей.
Велика роль ADMT и как средства перемещения схемы, так как после реализации схемы AD ее нельзя изменить напрямую. Чтобы внести изменения, необходимо удалить структуру и начать заново или применить ADMT, который позволяет перейти к другой схеме, не выстраивая ее заново.
Отметив это важное обстоятельство, я расскажу, как перенести домен NT 4.0 в Windows 2003 с использованием ADMT 2.0. Я сформировал простую виртуальную среду, затем дополнил ее доменом-источником NT 4.0 с именем IKDOM01 и целевым доменом Windows 2003 с полным именем (Qualified Domain Name, FQDN) IKDOM2.ORG. ADMT должен работать на целевом основном контроллере домена (PDC). Если целевой каталог реплицирован, то выбранный сервер должен также быть мастером операций — эмулятором PDC.
ADMT 2.0 совместим как с Windows 2003, так и с Windows 2000 Server. Инструмент можно загрузить с Web-узла Microsoft. Содержимое загружаемого файла admt2.exe следует извлечь в каталог ADMT, например. Один из извлеченных файлов, admigration.msi, устанавливает ADMT на выбранном сервере. По умолчанию ADMT разворачивается в подкаталоге Program FilesActive Directory Migration Tool корневого системного каталога. После установки инструмента следует подготовить два домена к миграции.
Подготовка к миграции
В Windows 2003 предусмотрено два режима работы AD: однородный (native) и смешанный (mixed). В Windows 2003 появилось несколько функций безопасности, отсутствовавших в прежних версиях. В чистой среде Windows 2003 можно настроить AD на работу в однородном режиме, который лучше защищен, но несовместим со старыми контроллерами домена (DC). В смешанном режиме серверы AD и NT 4.0 могут работать с общей средой безопасности, но многие новейшие функции системы безопасности для однородного режима недоступны. Для того чтобы убедиться, что в новом домене используется однородный режим, следует открыть оснастку Active Directory Users and Computers консоли управления Microsoft Management Console (MMC) и щелкнуть правой кнопкой мыши на объекте domain. Из контекстного меню следует выбрать пункт Raise Functional Level, если он доступен; в противном случае нужно выбрать пункты All Tasks, Raise Functional Level. На экране появится диалоговое окно, в котором показан текущий функциональный уровень домена и можно изменить режим работы на однородный. Более подробные сведения о функциональных уровнях домена содержатся в статье Microsoft «HOW TO: Raise Domain and Forest Functional Levels in Windows Server 2003» (http://support.microsoft.com/?kbid=322692). Следует помнить, что, подняв уровень функционирования домена, снизить его нельзя.
Затем необходимо создать двусторонние доверительные отношения между целевым и исходным доменами. На компьютере Windows 2003 требуется открыть оснастку Active Directory Domains and Trusts и щелкнуть правой кнопкой мыши на целевом домене (IKDOM2.ORG). Выбрав пункт Properties из контекстного меню, открываем диалоговое окно Properties. На вкладке Trusts следует щелкнуть на кнопке New Trust, чтобы запустить мастера New Trust Wizard, который поможет пользователю установить первую часть двусторонних доверительных отношений с доменом IKDOM01 NT 4.0.
Чтобы создать вторую часть доверительных отношений (от исходного домена к целевому), следует открыть окно User Manager for Domains из меню Administrative Tools на PDC NT 4.0 домена IKDOM01. В меню Policies нужно выбрать функцию Trust Relationships, затем определить двусторонние доверительные отношения с целевым доменом. Изменив оба домена, следует закрыть консоль Active Directory Domains and Trusts на PDC Windows 2003, но оставить открытой User Manager for Domains на IKDOM01.
Далее необходимо убедиться, что административные учетные записи, которые будут использоваться процессом миграции, располагают полномочиями в обоих доменах. В окне User Manager for Domains следует дважды щелкнуть мышью на объекте Administrators под объектом IKDOM01 и ввести администраторов для целевого домена (IKDOM2.ORGDomain Admins), чтобы предоставить им полномочия в исходном домене. В процессе настройки исходного домена можно сформировать группу, связанную с переносом идентификаторов SID, но ADMT автоматически создает эту группу на исходном домене и присваивает ей имя, соответствующее домену (в моем случае было задано имя IKDOM01$$$). После этого утилиту User Manager for Domains следует закрыть.
Затем необходимо назначить административные полномочия в домене Windows 2003. Нужно открыть оснастку Active Directory Users and Computers на машине Windows 2003, развернуть узел Builtin (в котором содержатся локальные группы сервера) под IKDOM2.ORG и добавить администраторов домена из исходного домена (IKDOM01Domain Admins) в локальную группу Administrators.
Следующий этап подготовки к миграции включает редактирование реестра на IKDOM01 PDC для поддержки клиента TCP/IP. Необходимо открыть редактор реестра, перейти в раздел HKEY_LOCAL_MACHINESYSTEM CurrentControlSetControlLsa и ввести новый параметр TcpipClientSupport типа DWORD. Новому параметру следует присвоить значение 1 и перезапустить IKDOM01 PDC.
Теперь можно приступать к миграции информации пользовательских учетных записей. На Windows 2003 PDC следует открыть оснастку Active Directory Migration Tool консоли MMC. Консоль MMC выглядит на экране довольно скромно: в ней нет почти ничего, кроме узла Active Directory Migration Tool, где хранятся отчеты. Инструмент ADMT работает под управлением мастеров; любое действие ADMT запускает один из 11 мастеров. Чтобы увидеть список мастеров, достаточно щелкнуть правой кнопкой мыши на узле Active Directory Migration Tool (экран 1). Существуют следующие мастера:
- User Account Migration Wizard — миграция учетных записей пользователей
- Group Account Migration Wizard — миграция учетных записей групп
- Computer Migration Wizard — миграция компьютеров
- Security Translation Wizard — преобразование безопасности
- Reporting Wizard — мастер отчетов
- Service Account Migration Wizard — миграция учетных записей служб
- Exchange Directory Migration Wizard — миграция каталога Exchange Directory
- Undo Last Migration Wizard — отмена предыдущей миграции
- Retry Task Wizard — повторная попытка выполнить задание
- Trust Migration Wizard — миграция доверительных отношений
- Group Mapping and Merging Wizard — отображение и слияние групп.
Некоторые мастера, такие как Trust Migration Wizard, позволяют выбрать исходный домен, а затем отображают единственный экран, функционирующий как диалоговое окно. Другие мастера, такие как User Account Migration Wizard, сложнее, но во всех используется один базовый процесс.
Миграция учетных записей пользователей
Я подробно расскажу об этапах работы мастера User Account Migration Wizard, предназначенного для миграции учетных записей пользователей (перенос паролей — отдельная операция). После запуска User Account Migration Wizard появляется малый экран заголовка. На следующем экране пользователю предоставляется возможность запустить мастер в тестовом режиме. Данная функция, которой нет ни в одном из других мастеров, позволяет настроить все параметры, связанные с миграцией пользователей, протестировать миграцию и получить отчет о потенциальных проблемах. Я рекомендую запустить мастер в тестовом режиме, чтобы сначала устранить любые неполадки, которые могут возникнуть в процессе миграции учетных записей пользователей, а потом настроить процедуру миграции паролей (она будет описана в следующем разделе) и, наконец, вновь запустить User Account Migration Wizard для переноса учетных записей пользователей и паролей одновременно.
На следующем этапе User Account Migration Wizard просит указать исходный и целевой домены. Следует отметить, что мастер отыскивает только домены AD и пропускает домен NT 4.0, с которым были установлены доверительные отношения в раскрывающемся окне доступных доменов. Имя домена NT 4.0 необходимо ввести вручную.
На следующем экране можно выбрать учетные записи пользователей. По щелчку на кнопке Add на этом экране открывается диалоговое окно с небольшим количеством функций, позволяющих выбирать объекты AD. Чтобы не вводить имя каждого пользователя вручную, следует щелкнуть на кнопке Advanced, и на экране появится расширенное диалоговое окно Select Users (экран 2). По щелчку на кнопке Find Now можно получить список всех учетных записей в целевом домене. К сожалению, нельзя отфильтровать встроенные учетные записи, такие как Administrator и Guest, поэтому при выборе их следует пропустить или удалить из списка после возвращения к мастеру.
Выбрав учетные записи для миграции, нужно уточнить их будущее местонахождение в целевом домене. Мастер отображает имена FQDN, и администратор может отредактировать целевую организационную единицу (OU) для учетных записей.
После определения местонахождения можно указать метод обработки паролей пользовательских учетных записей (см. экран 3). В стандартном режиме Complex Passwords создаются новые сложные пароли на основе случайной последовательности символов. Альтернативный вариант — назначить пароли, совпадающие с именем учетных записей. В любом случае мастер записывает файл истории, в котором каждая учетная запись пользователя связана со своим новым паролем, и администратору следует попросить пользователей изменить пароли после регистрации в домене. Третий вариант — перенести пароли пользовательских учетных записей из исходного домена, хотя до тех пор, пока не будут выполнены действия, описанные в следующем разделе статьи, функция Migrate passwords практически недоступна. Если выбрать ее и щелкнуть на кнопке Next, на экране появится сообщение об ошибке. Пока следует принять стандартные параметры и перейти к следующему экрану мастера.
На следующем экране представлено несколько вариантов активизации учетной записи (см. экран 4). Я рекомендую выбрать режим Target same as source, чтобы программа ADMT создала в целевом домене учетные записи с тем же статусом запуска, какой они имели в исходном домене. Этот режим дает некоторую уверенность, что даже случайно перенесенная ненужная или неактивная учетная запись останется неактивизированной. Кроме того, ADMT может автоматически отмечать исходные учетные записи для блокирования. На этом же экране имеется функция для миграции SID пользовательских учетных записей. По умолчанию при создании учетной записи пользователя в целевом домене AD назначает новой учетной записи новый SID и лишает ее полномочий и ограничений, определенных в исходном домене. Функция Migrate user SIDs to target domain копирует SID исходной учетной записи в предысторию новой учетной записи. Затем Windows использует этот параметр, чтобы связать старую и новую учетные записи и предоставить пользователю те же полномочия, которые он имел в исходном домене. В этом режиме назначаются заданные функции аудита, которые мастер автоматически активизирует в исходном и целевом доменах. Очевидно, перенос SID имеет смысл, если полномочия групп в целевом домене такие же, как в исходном.
Миграция SID вносит в процедуру дополнительный этап. На данном этапе мастер просит ввести действительные административные данные для исходного домена (IKDOM01). ADMT нуждается в явном указании таких данных, так как доступ к SID учетных записей — привилегированная операция.
На следующем экране User Account Migration Wizard (см. экран 5) можно определить другие параметры учетной записи пользователя, в том числе два важных групповых параметра. Следует выбрать первый параметр (Migrate associated user groups), чтобы перенести, наряду с учетными записями пользователей, выбранные группы исходного домена, которые не были определены в целевом домене. Необходимо также выбрать сопутствующий подпараметр (Update previously migrated objects), тем самым мы поставим ADMT в известность, что после создания новой группы для первого перенесенного пользователя, члена данной группы, необходимо обновлять эту группу, а не создавать новую в процессе миграции остальных ее пользователей. ADMT автоматически сохраняет членство пользователей в специализированных группах; если переносятся и SID, то все полномочия остаются неизменными.
Второй групповой параметр — Fix users? group memberships. Он связывает учетные записи пользователей с существующей группой в целевом домене на основании их членства в исходном домене (таким образом, термин fix в данном случае означает присоединение, а не исправление). Например, если учетная запись пользователя принадлежит к группе Domain Administrators в IKDOM01, то после миграции новая учетная запись будет членом группы Domain Administrators в IKDOM2. ADMT достаточно интеллектуален, чтобы не дублировать такие встроенные группы (при миграции групп), и дает администратору возможность указать, следует ли автоматически переносить эти сведения.
На последнем экране мастер просит выбрать стандартный способ переименования любых пользовательских записей, дублирующих существующие учетные записи в целевом домене. Ответив на этот вопрос, следует щелкнуть на кнопке Finish, чтобы начать или протестировать процесс миграции. В ходе миграции в окне статуса отображаются объекты, перенесенные мастером, и любые ошибки. Мастер также создает файл журнала, который можно просмотреть в конце миграции. Журнал доступен лишь до того, как будет закрыто окно мастера. Когда окно будет закрыто, в распоряжении администратора останутся только отчеты, генерируемые ADMT.
Перенос пароля
Одна из самых интересных функций ADMT 2.0 — возможность переносить пароли. Функция миграции паролей заслуживает особого внимания, так как требует дополнительных настроек как исходного, так и целевого DC, а также запуска службы в исходном домене. Служба работает с ключом, который предоставляется целевым доменом исходному и используется для шифрования и восстановления информации о пароле. Благодаря разделению процедур настройки миграции паролей и учетных записей пользователей сокращается число неполадок и время диагностики неисправностей.
Настройка процедуры миграции паролей начинается на целевом DC. Первый шаг состоит в распространении полномочий группы Everyone целевого домена на анонимных пользователей. Для этого следует открыть оснастку Domain Security Policy консоли MMC. Чтобы получить список доступных режимов безопасности, нужно развернуть Local Policies and Security Options. Требуется активизировать режим Network access: Let Everyone permissions apply to anonymous users (см. экран 6).
Следующий шаг — генерация ключевого файла пароля на целевом DC (в нашем примере — IKDOM2). Для генерации этого ключа в ADMT имеется утилита, запускаемая из командной строки; пример команды, генерирующей ключ:
admt key ikdom01 C: est *
где key — указание на необходимость генерировать ключ, ikdom01 — исходный домен, C: est — папка, в которой будет сохранен ключевой файл, а * выводит на экран приглашение задать пароль для ключевого файла в процессе генерации ключа. На экране 7 показано, что примером команды был создан ключевой файл C: est4A662TSJ.pes. В командной строке на целевом DC следует ввести еще одну команду
net localgroup "Pre-Windows 2000 Compatible Access" Everyone /Add
а затем перезапустить целевой DC.
Далее следует обратиться к исходному домену. Мы использовали PDC домена IKDOM01 в качестве машины-источника в процессе миграции учетной записи пользователя, но специалисты Microsoft рекомендуют задействовать производственный BDC (резервный контроллер домена) в качестве сервера для экспорта пароля. Последствия ошибки будут менее заметны, так как BDC обычно располагает свободными вычислительными ресурсами, а в процессе настройки требуется перезагрузка компьютера, что лучше делать на BDC, чем на PDC. Однако использовать BDC не обязательно, необходимое программное обеспечение можно развернуть и на PDC. Программы находятся в папке pwdmig, внутри папки, созданной файлом admt2.exe при запуске этого файла на целевом DC. Папку pwdmig и ключевой файл, подготовленный на целевом DC, следует скопировать на исходный DC, а затем запустить файл установки сервера экспорта пароля на исходном DC. На системе NT 4.0 необходимо запустить файл pwdmigpwdmig.exe, чтобы развернуть сервер экспорта пароля (на системе Windows 2003 или Windows 2000 нужно запустить файл pwdmigpwdmig.msi).
В процессе установки сервера экспорта пароля система попросит ввести путь к ключевому файлу *.pes. Другой запрос относится к паролю (если он имеется), назначенному для данного файла. После установки сервера экспорта пароля систему необходимо перезагрузить, но сначала нужно отредактировать реестр исходного DC таким образом, чтобы пришлось перезагружаться только один раз. Параметру AllowPasswordExport under the HKEY_LOCAL_MACHINESYSTEM CurrentControlSetControlLsa типа DWORD следует присвоить значение 1, чтобы разрешить экспорт пароля. После смены параметра необходимо перезагрузить исходный DC.
После перезагрузки можно воспользоваться мастером User Account Migration Wizard на целевом DC для миграции паролей вместе с учетными записями пользователей. Я обнаружил, что при миграции пароля часто происходят ошибки, поэтому советую познакомиться с рекомендациями по диагностике, приведенными в статье Microsoft «How to Troubleshoot Inter-Forest Password Migration with ADMTv2» (http://support.microsoft.com/?kbid=322981).
Вперед с ADMT
Я рассказал, как работать с ADMT 2.0 из графического интерфейса и, в меньшей степени, интерфейса командной строки. Одна из новых возможностей версии 2.0, о которой не упоминалось в данной статье, — сценарный интерфейс. Этот интерфейс не только позволяет обращаться к командной строке ADMT из сценария, но и открывает доступ к целому набору интерфейсов объектов. Чтобы использовать ADMT в сценарии, лучше всего начинать с тестового сценария, поставляемого вместе с инструментом. В сценарии Templatescript.vbs перечислены стандартные параметры для работы с различными интерфейсами и приведен текст примера для построения интерфейса ADMT.Migration.
ADMT 2.0 — мощный инструмент, который обеспечивает не только переход от старой версии Windows к более новой, но и текущее обслуживание и консолидацию доменов внутри предприятия. Благодаря расширенным функциям миграции объектов каталогов можно внести изменения в рабочий каталог и динамически расширить инфраструктуру. Несомненно, в будущих версиях ADMT появятся еще более мощные возможности консолидации — в конечном итоге даже отдельных элементов структуры каталогов.
Уильям Шелдон — ведущий инженер компании InterKnowlogy, имеет сертификаты MCSD и MCP+SiteBuilding. С ним можно связаться по адресу: mailto:bsheldon@interknowlogy.com