Я работаю с контроллером домена Windows Server 2012 R2 и в основном с клиентами Windows 7 Professional.
Я пытаюсь создать систему, в которой все пользовательские данные будут храниться на файловом сервере и считываться и записываться максимально синхронно (то есть, минимальное копирование пользовательских данных при входе и выходе из системы, без локальных профилей или хранилищ).
Для этого я использую и перенаправление папок, и перемещаемые профили пользователей в тандеме. Перенаправления папок находятся на файловом сервере по адресу,
\\MYSERVER\Home$\%USERNAME%
и перемещаемые профили на,
\\MYSERVER\Profile$\%USERNAME%
Я дополнительно использую групповую политику,
Computer Configuration
> Policies
> Administrative Templates
> System
> User Profiles
> Set user home folder
чтобы установить домашнюю папку пользователя в том же месте, где находятся перенаправления папок. Если говорить точнее,
Location = On the network
Path = \\MYSERVER\Home$
Drive letter = Y:
Это имеет эффект нарастания,
\\MYSERVER\Home$\%USERNAME%
при Y:
входе пользователя в систему, как и ожидалось. Однако, похоже, что когда пользователь запускает экземпляр командной строки, его «домашний» каталог — локальный,
C:\Users\%USERNAME%
Этот путь также является значением %USERPROFILE%
. Более того, хотя Y:
он смонтирован и доступен через проводник Windows, cd Y:
в командной строке немедленно перенаправляет обратно на локальный C:
. Имея опыт работы с Linux, это меня немного сбило с толку!
Итак, мой вопрос:как можно гарантировать, что домашняя папка пользователей домена будет правильно и полностью перенаправлена в сетевую папку с помощью групповой политики?
решение1
Иногда есть серая зона между "домашним диском" и "профилем" пользователя. Вот несколько переменных окружения, которые следует иметь в виду:
Пользователь с «сетевым» домашним диском И «локальным» профилем ДОМАШНИЙ ДИСК=Y: ДОМОЙ=\ USERPROFILE=C:\Users\Снупи HOMESHARE=\\SERVER\Home$\Snoopy Пользователь с «сетевым» домашним диском И «перемещаемым» профилем ДОМАШНИЙ ДИСК=Y: ДОМОЙ=\ USERPROFILE=C:\Users\Снупи HOMESHARE=\\SERVER\Home$\Snoopy Пользователь без «сетевого» домашнего диска ДОМАШНИЙ ДИСК=C: HOMEPATH=\Пользователи\Снупи USERPROFILE=C:\Users\Снупи
Обратите внимание, что:
1) USERPROFILE одинаков для всех 3 типов пользователей
. 2) Для пользователя БЕЗ сетевого домашнего диска USERPROFILE совпадает с (Homedrive + Homepath), а переменная окружения «HOMESHARE» отсутствует.
Существует 3 вида профилей: локальный, перемещаемый, обязательный.
Все 3 разновидности профилей Windows используют локальный путь профиля, но каждый из них использует его по-разному.
Даже для пользователей с перемещаемыми профилями USERPROFILE всегда C:\Users...
По всем этим причинам вы не можете предотвратить создание C:\Users\Name.
Вы можете управлять путем по умолчанию для «cmd» (для каждого ярлыка), установив параметр «запускать в» ярлыка cmd, или для всех cmd, запускаемых пользователем, установив раздел реестра:
GPO path: UserConf/Prefs/Windows/Registry
Key = HKEY_CURRENT_USER\Software\Microsoft\Command Processor
Type = REG_EXPAND_SZ
Name = Autorun
Value = CD /d %HOMEDRIVE%%HOMEPATH%
Вы можете использовать объекты групповой политики для перенаправления любой из папок «MyX» на сетевой путь, так что щелчок по элементу MyX в диалоговом окне файла будет перенаправлять на этот путь, но если кто-то вручную перейдет в C:\Users\Name\somePlace, ничто не сможет помешать ему записать данные на локальный путь.
MyDocuments folder redir:
GPO path: UserConf/Policies/Windows/FolderRedir/Documents
Каждая групповая политика имеет 2 ветви: компьютер, пользователь.
Вы не хотите использовать ветвь КОМПЬЮТЕР для управления домашними дисками ПОЛЬЗОВАТЕЛЯ. Я думаю, что ваш GPO "Компьютер/.../Установить домашнюю папку пользователя" может быть причиной проблемы с Y обратно на C. Вам не нужно использовать GPO для сопоставления буквы домашнего диска. Лучше всего контролировать это с помощью свойств учетной записи пользователя, и когда это сделано таким образом, она автоматически сопоставлена ОС.
PS C:\> set-aduser snoopy -homeDrive "Y" -homeDirectory "\\server\home$\snoopy"
Что касается вашей «асинхронной» цели, некоторые файлы в вашем профиле (ntuser.dat) блокируются во время входа в систему и могут быть скопированы только во время процесса входа/выхода из системы.