
Вы можете использовать групповые политики для копирования определенных файлов и папок на пользовательские компьютеры в домене Active Directory. Вы можете поместить файлы на Рабочий стол, в определенный каталог профиля пользователя или любую другую папку на локальном диске. С помощью GPO можно автоматически копировать и обновлять различные файлы конфигурации, INI-файлы, исполняемые файлы приложений (EXE), библиотеки DLL или сценарии из общего хранилища.
Копирование файлов с помощью предпочтений групповой политики
Например, я хочу скопировать два файла (app.exe
и settings.xml
) на рабочие столы некоторых пользователей домена Active Directory.
Создайте общую папку для хранения исходных файлов, которые вы хотите скопировать на компьютеры пользователей. Это может быть общая SMB-папка на файловом сервере или каталог SYSVOL на контроллере домена (эта папка автоматически реплицируется между всеми DC в домене с помощью DFS, ее удобно использовать, так как она помогает снизить нагрузку на WAN-каналы). Я поместил файлы в папку Sysvol \\woshub.com\SYSVOL\woshub.com\scripts\CorpApp
. Убедитесь, что Аутентифицированные пользователи группа имеет права на чтение этой папки.
- Создайте новую группу безопасности Active Directory (CorpAPPUsers) с помощью оснастки Active Directory Users and Computers (
dsa.msc
). Вы можете создать группу с помощью этой команды PowerShell:New-ADGroup CorpAPPUsers -path 'OU=Groups,OU=DE,dc=woshub,DC=com' -GroupScope Global -PassThru –Verbose
Добавьте пользователей в группу, на рабочий стол которой вы хотите автоматически копировать файлы с помощью GPO:Add-AdGroupMember -Identity CorpAPPUsers -Members asmith, bmuller, tweber
- Откройте консоль управления групповой политикой (
gpmc.msc
); - Создайте новый объект GPO (CopyCorpApp) и привяжите его к OU, содержащему компьютеры пользователей;
- Отредактируйте параметры GPO;
- Разверните следующий раздел «Параметры групповой политики»: Пользователь Конфигурация -> Предпочтения -> Настройки Windows -> Файлы;
Если вам нужно копировать файлы на компьютеры независимо от вошедших в систему пользователей, лучше использовать аналогичную политику в разделе Computer Configuration (Конфигурация компьютера) GPO.
- Выберите Новый -> Файл;
- Укажите исходный файл в общей папке и путь к целевому файлу на компьютере, на который вы хотите его скопировать. Если указанный путь не существует, он будет создан автоматически. Обязательно укажите полное имя целевого файла (если указать только целевой каталог, то при копировании файла будет выдана ошибка «доступ запрещен»).
Здесь можно выбрать конкретное имя файла или скопировать сразу все файлы из исходного каталога, указав символ подстановки
*
. - Для копирования файлов с помощью GPO доступны 4 действия:
Создать — файл копируется в целевой каталог только в том случае, если он там не существует;
Заменить — целевой файл на компьютере пользователя всегда заменяется исходным файлом. Если исходный файл имеет большой размер, он будет копироваться каждый раз при обновлении GPO, что может привести к высокой нагрузке на сеть. Если вы хотите заменить файл только один раз, включите опцию «Применить один раз и не применять повторно» на вкладке «Общие»;
Обновить (политика по умолчанию) — если файл уже существует, а исходный и целевой файлы отличаются, он не заменяется исходным (заменяются только атрибуты). Если файл не существует, он будет скопирован;
Удалить — удалить целевой файл. - Вы можете выбрать определенную папку на компьютере в качестве целевого каталога или использовать переменные среды. Чтобы скопировать файлы на Рабочий стол текущего пользователя, используйте
%DesktopDir%
Вы можете просмотреть полный список переменных окружения, доступных в GPP, нажав кнопку F3.Здесь приведен список переменных среды, которые можно использовать в качестве папок назначения при копировании файлов с помощью GPO:
%AppDataDir%
Папка Application Data текущего пользователя %CommonAppdataDir%
Папка Application Data всех пользователей %CommonDesktopDir%
Рабочий стол всех пользователей %CommonProgramsDir%
Каталог программ всех пользователей. %CommonStartMenuDir%
Папка меню «Пуск» всех пользователей %CommonStartUpDir%
Каталог «Пуск» для всех пользователей %ComputerName%
Имя компьютера NetBIOS %DesktopDir%
Текущий пользователь Рабочий стол %DomainName%
Текущее доменное имя %LocalTime%
Местное компьютерное время %LogonDomain%
Домен текущего пользователя %LogonServer%
Имя контроллера домена, на котором аутентифицирован пользователь %LogonUser%
Имя текущего пользователя %NetPlacesDir%
Каталог «Мои сетевые места» пользователя %ProgramFilesDir%
Каталог Program Files %ProgramsDir%
Каталог программ пользователя %RecentDocumentsDir%
Каталог «Последние документы» пользователя %SendToDir%
Каталог «Отправить» пользователя %StartMenuDir%
Меню «Пуск» текущего пользователя %StartUpDir%
Папка «Пуск» текущего пользователя %SystemDir%
Каталог Windows %SystemDrive%
Диск, на котором установлена операционная система %TempDir%
Папка User Temp %WindowsDir%
Каталог Windows - Чтобы скопировать файлы на рабочие столы конкретных пользователей, откройте файл Общие На вкладке настроек политики включите опцию Таргетинг на уровне элементов и нажмите кнопку Таргетинг;
- В следующем окне вы можете выбрать дополнительные параметры применения GPO. В моем случае я хочу ограничить политику следующими параметрами CorpAPPUsers только члены группы. Чтобы сделать это, нажмите Новый элемент -> Группа безопасности и укажите группу пользователей домена;
- Поскольку мы привязали GPO к организационной единице, содержащей компьютерные объекты (а не учетные записи пользователей), вам нужно включить режим обработки GPO loopback. Включите опцию Настройка режима обработки пользовательской обратной петли групповой политики = Объединить в разделе Конфигурация компьютера -> Политики -> Административные шаблоны -> Система -> Групповая политика;
- Затем обновите параметры групповой политики на клиентских компьютерах (
gpupdate /force
или выйдите из системы и войдите снова), и убедитесь, что эти два файла были автоматически скопированы на рабочий стол пользователя.
Таким образом, вы можете копировать скрипты, исполняемые файлы приложений или системные инструменты (PsTools, iperf, Portqry и т. д.) на пользовательские компьютеры. Вы можете скопировать файл в Program Files и поместить ярлык на него на рабочем столе с помощью GPO.
Если файлы не копируются на компьютеры пользователей, вы можете использовать инструмент gpresult.exe, чтобы выяснить, почему групповая политика не применяется. Чтобы получить подробные журналы операций копирования файлов GPO, можно включить журнал в разделе Конфигурация компьютера -> Политики -> Административные шаблоны -> Система -> Групповая политика -> Ведение журнала и трассировка. Включите Настройка протоколирования и трассировки предпочтений файлов и выберите опцию Информация, предупреждения и ошибки режим в настройках политики.
Теперь вы можете отслеживать все события и ошибки, связанные с копированием файлов через GPO на клиентах, в журнале Event Viewer -> Application. Включите фильтр по параметру Файлы групповой политики источник.
В моем случае ошибка Event ID 4098 появилась на компьютере пользователя при копировании файлов через GPO:
The user '%CommonDesktopDir%' preference item in the 'CopyCorpApp {GPO_GUID}' Group Policy Object did not apply because it failed with error code '0x80070005 Access is denied.' This error was suppressed.
Эта проблема была решена путем предоставления NTFS-разрешений на чтение файлов в исходном каталоге для Аутентифицированные пользователи группа.
Как копировать папки и файлы с помощью сценария запуска GPO?
Обратите внимание, что привилегии групповой политики не позволяют копировать весь каталог со всеми дочерними вложенными папками и файлами. Если вам нужно скопировать папку с большим количеством файлов, или вы хотите, чтобы содержимое целевых пользовательских папок всегда обновлялось при обновлении любого файла в источнике, вы можете сделать простой сценарий входа в систему и запустить его через GPO.
Давайте создадим сценарий запуска GPO для копирования всех новых (и измененных) файлов из исходного каталога на компьютеры пользователей:
- Создайте пакетный файл в Sysvol:
CopyCorpApp.bat
IF EXIST "C:\CorpApp" EXIT
MD "C:\CorpApp"
xcopy \\fs01\Sources\CorpApp\*.* C:\CorpApp /e /y /k /r /d /iВ некоторых случаях для копирования файлов лучше использовать более мощную команду robocopy.Этот скрипт скопирует всю структуру каталога и все файлы с атрибутами. Копируются только новые или измененные файлы. Это означает, что при каждом запуске сценария, если в исходном каталоге нет изменений, команда xcopy не будет перезаписывать файлы. - Создайте новый GPO (как описано выше) и назначьте его OU с компьютерами пользователей;
- Развернуть Конфигурация компьютера -> Политики -> Параметры Windows -> Сценарии (запуск/выключение). Выберите Запуск;
- Нажмите на кнопку Добавить кнопку и укажите UNC-путь к вашему скрипту на SysVol;
- Перезагрузите компьютер пользователя и убедитесь, что исходная папка была успешно скопирована.