Вы можете использовать групповые политики чтобы скопировать определенные файлы и папки на компьютеры пользователей компьютеры домена. Вы можете поместить файлы на рабочий стол, в определенный каталог профиля пользователя или любой другой каталог на локальном диске Windows компьютера. С помощью GPO вы можете автоматически копировать и обновлять из единого репозитория различные файлы конфигурации, ini-файлы, исполняемые exe-файлы приложений, dll-библиотеки или скрипты.
Копирование файлов с помощью Group Policy Preferences
Допустим, ваша задача – скопировать два файла (
app.exe
и
settings.xml
) на рабочий стол некоторых пользователей домена AD.
Создайте каталог, в котором будут хранится исходные файлы, которые нужно скопировать на компьютеры пользователей. Это может быть, как общая SMB папка на файловом сервере, так и каталог SYSVOL на контроллере домена (каталог автоматически реплицируется между всеми DC в домене с помощью DFS, его удобно использовать с точки зрения уменьшения нагрузки на WAN каналы). Я поместил файлы в каталог
\\test.com\SYSVOL\test.com\scripts\CorpApp
.Убедитесь, что у группы Authenticated Users есть права на чтение в этой папке.
- Создайте новую группу безопасности в AD CorpAPPUsers через графическую оснастку Active Directory Users and Computers (
dsa.msc
). Можно создать группу с помощью PowerShell командлета:New-ADGroup CorpAPPUsers -path 'OU=Groups,OU=SPB,dc=test,DC=com' -GroupScope Global -PassThru –Verbose
Добавьте в группу пользователей, на рабочий стол которых нужно автоматически копировать файлы через GPO:Add-AdGroupMember -Identity CorpAPPUsers -Members aaivanov, bbpetrov, ausidorov
- Запустите консоль управления политиками Group Policy Management (
gpmc.msc
); - Создайте новый объект GPO (CopyCorpApp) и назначьте его на OU, в котором находятся компьютеры пользователей;
- Перейдите в режим редактирования GPO (Edit);
- Разверните следующий раздел предпочтений групповых политик (Group Policy Preferences) User Configuration –> Preferences -> Windows Settings -> Files;Если нужно скопировать файлы на компьютеры независимо от пользователей, которые на них залогинены, лучше использовать аналогичную политику в секции GPO Computer Configuration.
- Выберите пункт New –> File;
- Укажите исходный файл в сетевом каталоге (source) и целевой путь на компьютере, куда который нужно поместить файл. Если указанный путь не существует, он будет автоматически создан при копировании (например, допустимо использовать
C:\Users\%logonuser%\MyNewFolder\Folder1\file.txt
) Обязательно укажите полное имя целевого файла (если просто указать каталог, при копировании появится ошибка “access denied”);Можно указать для копирования как конкретный файл, так и скопировать сразу все файлы из каталога, поставив*
; - Доступно 4 режима работы GPO копирования файлов:
- Create – файл копируется в целевой каталог, только если он в нем отсутствует;
- Replace – целевой файл на компьютере пользователя всегда заменяется исходным (если исходный файл большой, он будет копироваться при каждом обновлении GPO, что может вызвать нагрузку на сеть). Если вы хотите заменить файл только один раз, включите опцию ‘Apply once and do not reapply’ на вкладке Common;
- Update (политика по умолчанию) – если файл уже существует и исходный и целевой файлы отличаются, то копирование не будет выполнение (будут заменены только атрибуты). Если файл отсутствует – он будет скопирован;
- Delete – удалить целевой файл.
- В качестве целевого каталога можно выбрать конкретную папку на компьютере, или использовать переменные окружения. Чтобы скопировать файл на рабочий стол текущего пользователя, используйте
%DesktopDir%
;Полный список переменных окружения можно вывести, нажавF3
.
Ниже представлен список переменных окружения, которые можно использовать в качестве целевых папок при копировании файлов через GPO:%AppDataDir% Папка Application Data текущего пользователя %CommonAppdataDir% Папка Application Data всех пользователей %CommonDesktopDir% Рабочий стол всех пользователей Переменная является deprecated и вместо нее лучше использовать
%Public%\Desktop
%CommonProgramsDir% Каталог Programs всех пользователей. %CommonStartMenuDir% Меню Пуск (папка Start Menu) всех пользователей. %CommonStartUpDir% Каталог автозагрузки (Startup) всех пользователей %ComputerName% NetBIOS имякомпьютера %DesktopDir% Рабочийстолтекущегопользователя %DomainName% Имятекущегодомена %LocalTime% Локальное время компьютера %LogonDomain% Домен текущего пользователя %LogonServer% Имя контроллера домена, на котором аутентифицирован пользователь %LogonUser% Имя текущего пользователя %NetPlacesDir% Каталог сетевое окружение (My Network Places) пользователя %ProgramFilesDir% Каталог Program Files Windows %ProgramsDir% Каталог Programs пользователя %RecentDocumentsDir% Каталог Recent Documents пользователя %SendToDir% Каталог Send пользователя %StartMenuDir% Меню Пуск (папка Start Menu) текущего пользователя %StartUpDir% Каталог автозагрузки (Startup) текущего пользователя %SystemDir% Каталог Windows. %SystemDrive% Диск, на котором установлена операционная система %TempDir% Папка Temp пользователя %WindowsDir% Каталог Windows. - Чтобы скопировать файлы на рабочий стол только определенных пользователей, нужно в настройках политики перейти на вкладку Common, включить Item-Level Targeting и нажать кнопку Targetng;
- В открывшемся окне можно выбрать дополнительные условия применения данной GPO. В нашем случае я хочу ограничить политику так, чтобы она применялась только для членов группы CorpAPPUsers. Для это нужно нажать New Item -> Security Group и выбрать доменную группу пользователей;
- Т.к. мы назначили GPO на Organizational Unit с компьютерами (а не пользователями), нужно включить опцию замыкания GPO. В Configure user Group Policy loopback processing mode = Merge в Computer Configuration -> Policies -> Administrative Templates -> System -> Group Policy;
- Осталось обновить параметры групповых политик на клиентских компьютерах (
gpupdate /force
или выполнить логофф/логон), и убедиться, что на рабочий стол пользователей были автоматически cкопированы два файла.
Таким образом можно скопировать на компьютеры пользователей скрипты, исполняемые файлы приложений, или системные утилиты (PsTools, iperf, Portqry и т.д). Можно скопировать файл в Program Files и через GPO поместить ярлык на него на рабочий стол.
Если после настройки политик файлы, вы можете разобраться почему не применяется групповая политика с помощью утилиты gpresult.exe. Также для получения детальных логов копирования файлов через GPO, вы можете включить лог в разделе Computer Configuration -> Policies -> Administrative Templates -> System -> Group Policy -> Logging and tracing. Включите параметр Configure Files preferences logging and tracing и выберите в настройках режим Informational, Warning, and Errors.
Теперь на клиентах можно отследить все события и ошибки копирования файлов через GPO в журнале Event Viewer -> Application. Включите фильтр по источнику Group Policy Files.
В моем случае при копировании файлов через GPO появилась ошибка Event ID 4098:
The user '%CommonDesktopDir%' preference item in the 'CopyCorpApp {FC41DB99-AFD2-4F5B-9112-2C90BF4A5A13}' Group Policy Object did not apply because it failed with error code '0x80070005 Access is denied.' This error was suppressed.
Данная проблема решилась предоставлением NTFS прав на чтение файлов в каталоге-источнике для группы Authenticated Users.
Скопировать все папки и файлы с помощью логон-скрипта GPO
Обратите внимание, что в Group Policy Preferences нет встроенной возможности скопировать целиком каталог со вложенными папками и файлами. Если нужно скопировать папку с большим количеством файлов, или вы хотите, чтобы содержимое целевых папок пользователей всегда обновлялось при обновлении любого файла в источнике, можно сделать небольшой логон скрипт и запускать его через GPO.
Рассмотрим скрипт для копирования всех новых (измененных) файлов из целевого каталога на компьютеры пользователей:
- Создайте файл скрипта в Sysvol:
CopyCorpApp.bat
IF EXIST "C:\CorpApp" EXIT
MD "C:\CorpApp"
xcopy \\msk-dc02\RDS-Cluster\CorpApp\*.* C:\CorpApp /e /y /k /r /d /iВ некоторых случаях для копирования фалов предпочтительнее использовать утилиту robocopy.Этот скрипт скопирует всю структуру каталогов и все файлы со всеми атрибутами. Копируются только новые или измененные файлы. Это означает, что при каждом запуске скрипта, если в исходном каталоге нет изменений, команда xcopy не будет перезатирать файлы. - Создайте новую GPO (как указано выше) и назначьте ее на OU с компьютерами пользователей;
- Перейдите в раздел Computer Configuration->Policies->Windows Settings->Scripts (Startup/shutdown). Выберите Startup;
- Нажмите кнопку Add и укажите UNC путь к вашему скрипту на SysVol;
- Перезагрузите компьютер пользователя и проверьте, что в исходная папка была успешно скопирована.
Копировать файлы по звездочке можно из сетевого каталога в локальный, но если в каталоге есть вложенные каталоги, то для каждого надо сделать отдельное правило, звездочкой они не захватываются
Да, все верно. Вложенны каталоги нужно создавать отдельно и отдельные правила для копирования файлов из них. Если у вас сложная структура каталогов, которые нужно скопировать проще использовать лого сркипты с xcopy или robocopy.
Статья очень полезная, папка создается, но файлы из сетевого каталога почему то не копируются.
Помогите понять почему.
Копируете файлы по *? Если политика для пользователей, проверьте, что у пользователей есть NTFS права на файлы. Какие настройки политики вы исползуете?
Доброго дня.
Благодарю Вас за подробнейшую инструкцию.
Возникли сложности с подключение списков баз 1с для пользователей с помощью GPO и благодарю Вашему сайту я нашла ответ на этот вопрос.
Также очень интересные статьи, которые написаны простым и доступным языком.
А если нужно копировать файлы в системную директорию ?
Например %ProgramFiles%\***, там требуются права админа но у обычных пользователей их нет и gpo не отрабатывает.
Для копирования в системные разделы нужно использовать не пользовательскую политику, а политику компьтера из раздела GPO Computer Configuration. Настройка аналогична.
Возможно применение на все машины домена в ГПО по умолчанию?
Практически — можно, но не рекомендуется вносить изменения через default domain policy. Лучше создать новую GPO и навесить на корень домена
Добрый день, статья отличная все понятно и просто. Но подскажите пожалуйста, я не хочу распространять через имя рабочей станции а именно через созданную группу пользователей. Что мне нужно изменить для того чтобы только одна группа с определенными людьми принимала эту политику. А то если я убираю рабочую станцию с Workstation то политика перестает работать. И если отключаю функцию Configure user Group Policy loopback processing mode = Merge то тоже не работает.
Папка создается, файл из сетевого каталога почему то не копируется. Может ли это быть связано с тем что на целевой машине, куда копируем, винда не активирована?
Врядли проблема с активацией. почему-т мне кажется что у вас просто проблема с правами NTFS — у пользователя просто нет прав на чтение файла или на создание/перезапись файла в целевой папке
Как тогда групповой политикой пользователям домена раздать права на создание файла в папке?
Раздел GPO Computer configuration > Policies > Windows Settings > Security Settings > File System
Добрый день.
У меня файл копируется с 0 объёмом. В логах есть ошибка что недостаточно прав.
Пользователь имеет доступ к данному файлу на сетевом устройстве.
Вы копируете через политику раздела users или computers?
права на создание файла у пользователя (если под пользователем) должны быть и на истоник и на целевой папке
Была в октябре/ноябре проблема с обновлениями windows 10, после которых файлы через GPO перестали копироваться. Мы удалили KB5017308 и все стало ок
хотел заменять файлы в папке 1с старт каждого пользователя, политика отрабатывает, но файл не меняет, загвоздка в том что исходный файл почему то не может удалится, если изначально убрать его ручками то все отрабатывает, пробовал со всеми атрибутами (создать, обновить, заменить, удалить)
Возможно файл используется/заблокирован пользователем или системой.
Ну и проверьте, что у пользователей без прав админа есть права на удаление этого файла.