Миграция локальных, UPD и roaming-профилей в FSLogix с помощью PowerShell-модуля FSLogixMigration
После успешного внедрения FSLogix Profile Containers для управления пользовательскими профилями возникает ключевой вопрос: как перенести существующие профили пользователей? Ручной перенос сотен или тысяч профилей локальных учетных записей, User Profile Disks (UPD) или Roaming Profiles — трудоемкая и рискованная задача.
К счастью, существует модуль PowerShell FSLogixMigration. Этот инструмент позволяет автоматизировать массовую конвертацию профилей различных типов в контейнеры FSLogix.
Перед началом работы убедитесь, что ВМ, где будет запускаться миграция, установлены следующие компоненты и она находится в требуемом домене:
-
Модуль Active Directory для PowerShell (RSAT-AD-PowerShell): используется для получения SID пользователей домена на основе имен профилей.
- Установка:
Add-WindowsFeature RSAT-AD-PowerShell
-
Модуль Hyper-V: требуется для операций создания и управления виртуальными жесткими дисками (VHD/VHDX), которые являются основой контейнеров FSLogix.
- Установка:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
-
Модуль Pester (версия 4.8.1 или выше): используется для внутреннего тестирования скриптов модуля.
- Установка: запустите PowerShell от имени администратора и выполните:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Install-Module -Name Pester -Force -SkipPublisherCheck
Примечание: первая строка (Tls12) может потребоваться, если возникают ошибки при подключении к репозиторию PowerShell Gallery.
Права администратора: учетная запись, под которой запускается скрипт, должна иметь права на чтение всех файлов в исходных профилях и запись в целевую папку для контейнеров FSLogix.
Установка и импорт модуля FSLogixMigration
- Скачайте последнюю версию модуля со страницы GitHub: https://github.com/gregdod/FSLogixMigration
- Распакуйте папку FSLogixMigration-#.#.# в один из каталогов модулей PowerShell. Самый простой путь:
C:\Users\<Ваше_Имя_Пользователя>\Documents\WindowsPowerShell\Modules\
- Запустите PowerShell (от имени администратора) и импортируйте модуль:
Import-Module FSLogixMigration
При успешном импорте вы увидите приветственное сообщение. Модуль автоматически проверит наличие требуемых компонентов (ActiveDirectory, Hyper-V, Pester) и предупредит, если чего-то не хватает.

Основные функции модуля
Модуль предоставляет две ключевые функции для миграции:
- Convert-RoamingProfile — конвертирует классические Roaming Profiles или локальные профили в контейнер FSLogix.
- Convert-UPDProfile — конвертирует User Profile Disks (UPD) в контейнер FSLogix.
Общий принцип работы:
- Скрипт находит исходные профили (по одному, по папке или через CSV-файл).
- Для каждого профиля получает SID пользователя (через Active Directory).
- Создает новый VHD(X)-диск в целевой папке с заданными параметрами (размер, размер сектора).
- Копирует все данные из исходного профиля в новый VHD(X)-диск с помощью Robocopy.
- Создает необходимые записи реестра FSLogix (.reg файл), который нужно применить к целевой системе.
Примеры использования команд
Пример 1: Массовая миграция всех UPD-дисков из общей папки
Convert-UPDProfile -ParentPath "F:\Shares\UPDs" -Target "\\FileServer\Profiles$" -VHDMaxSizeGB 30 -VHDLogicalSectorSize 4K -SwapDirectoryNameComponents
- -ParentPath: путь к папке, где хранятся VHD-файлы UPD.
- -Target: сетевая или локальная папка для размещения новых контейнеров FSLogix (VHDX).
- -VHDMaxSizeGB 30: максимальный размер создаваемого диска (30 ГБ).
- -VHDLogicalSectorSize 4K: рекомендуемый размер сектора для лучшей производительности на современных системах.
- -SwapDirectoryNameComponents: ключевой параметр. Создает папку профиля в формате ИмяПользователя_SID. Это соответствует политике FSLogix “Swap directory name components”, которая настоятельно рекомендуется для безопасной и корректной работы.
Пример 2: Миграция одного локального профиля
Convert-RoamingProfile -ProfilePath "C:\Users\Ivanov.I" -Target "\\FileServer\Profiles$" -VHDMaxSizeGB 20 -VHDLogicalSectorSize 512 -VHD -LogPath C:\MigLog.txt
- -ProfilePath: указывает путь к конкретному профилю.
- -VHD: создает диск в устаревшем формате VHD (по умолчанию — VHDX). Используйте, если целевая среда требует VHD.
- -LogPath: сохраняет детальный лог операции в указанный файл.
Пример 3: Миграция по списку из CSV-файла
Вы можете подготовить файл profiles.csv с колонкой ProfilePath и использовать его для выборочной миграции.
Convert-RoamingProfile -CSV "C:\temp\profiles.csv" -Target "\\FileServer\Profiles$" -VHDMaxSizeGB 25 -VHDLogicalSectorSize 4K
Ключевой момент для миграции локальных профилей
При миграции локальных профилей недоменных пользователей возникает сложность: их SID не существует в Active Directory. Модуль попытается найти пользователя по имени, но для успеха необходимо выполнить условие:
В домене должна существовать учетная запись с тем же именем пользователя (логином), что и у старого локального профиля.
Практический шаг перед миграцией:
- Создайте в домене Active Directory пользователей с именами, идентичными именам папок локальных профилей (например, для папки C:\Users\Ivanov.I создайте доменного пользователя Ivanov.I).
- Модуль FSLogixMigration сможет найти SID этого доменного пользователя и правильно назвать контейнер (например, ivanov.i_S-1-5-21-…).
Важный шаг после копирования данных: Файл ntuser.dat
Файл ntuser.dat — это куст реестра пользователя. При миграции он копируется «как есть», со всеми старыми настройками и потенциальными проблемами.
Рекомендация: чтобы избежать конфликтов и проблем при первой загрузке нового FSLogix-профиля, удалите файл ntuser.dat из корня перенесенного профиля на VHD-диске. При следующем входе FSLogix создаст свежий, чистый файл ntuser.dat, основанный на профиле-заготовке (Default User). Ключевые персональные настройки (например, из AppData\Roaming) сохранятся.
Модуль FSLogixMigration — мощный инструмент, который значительно упрощает сложный процесс перехода на FSLogix Profile Containers. Автоматизируя создание дисков и копирование данных, он минимизирует человеческие ошибки и экономит массу времени.