Установка новых шрифтов на компьютеры в домене Active Directory — задача, которая может быть автоматизирована с использованием групповых политик (GPO) или PowerShell-скриптов. Это позволяет централизованно управлять шрифтами на рабочих станциях и серверах, обеспечивая единообразие и соответствие корпоративным стандартам. В статье мы рассмотрим два метода установки шрифтов: через Group Policy Preferences для небольшого количества шрифтов и с помощью PowerShell для массовой установки. Инструкции протестированы на Windows 10 (20H2) и Windows Server 2016/2019.
1. Установка шрифтов через групповые политики
Для установки одного или нескольких шрифтов используйте возможности Group Policy Preferences. Процесс включает копирование файла шрифта (.ttf) в системный каталог и добавление записи в реестр.
Подготовка файлов
1. Скопируйте файл шрифта (.ttf) в сетевую папку, доступную клиентам, например:
– Каталог SYSVOL на контроллере домена: \\resource.loc\SYSVOL\resource.loc\scripts\Fonts.
– Или другая общая папка на файловом сервере.
Создание GPO
1. Запустите редактор групповых политик: gpmc.msc (Конфигурация компьютера -> Управление групповыми политиками).
2. Создайте новую политику, например, GPO_InstallFonts, и свяжите ее с нужной OU, содержащей компьютеры.
3. Перейдите в режим редактирования политики.
Копирование файла шрифта
1. В редакторе GPO перейдите в раздел:
Computer Configuration -> Preferences -> Windows Settings -> Files
(Конфигурация компьютера -> Настройки -> Параметры Windows -> Файлы).
2. Создайте новое правило копирования файла:
– Source: \\resource.loc\SYSVOL\resource.loc\scripts\Fonts\Roboto-Black.ttf
– Destination: %WindowsDir%\Fonts\Roboto-Black.ttf
Настройка реестра
1. Перейдите в раздел:
Computer Configuration -> Preferences -> Windows Settings -> Registry
(Конфигурация компьютера -> Настройки -> Параметры Windows -> Реестр).
2. Используйте мастер импорта параметров реестра:
– Выберите New -> Registry Wizard (Мастер создания элементов реестра).
– Подключитесь к компьютеру, где шрифт уже установлен вручную.
– В ветке HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts найдите параметр, соответствующий шрифту (например, Roboto Black).
– Импортируйте этот параметр в GPO.
Проверка установки
1. Обновите политики на клиентском компьютере командой:
gpupdate /force
2. Проверьте наличие шрифта в панели управления Windows:
Settings -> Personalization -> Fonts
(Параметры -> Персонализация -> Шрифты).
3. Если шрифт не установился, выполните диагностику:
– Проверьте применение политики командой:
gpresult /r
– Убедитесь, что политика назначена на правильную OU и файл шрифта доступен.
2. Массовое развертывание шрифтов через PowerShell
Для установки большого количества шрифтов (.ttf или .otf) создание отдельных правил в GPO становится неэффективным. В этом случае используйте PowerShell-скрипт, который автоматизирует копирование файлов и настройку реестра.
PowerShell-скрипт для установки шрифтов
Следующий скрипт копирует все шрифты из сетевой папки в системный каталог %WindowsDir%\Fonts, регистрирует их в реестре и записывает действия в лог-файл.
function WriteLog
{
Param ([string]$LogString)
$Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
$LogMessage = "$Stamp $LogString"
Add-Content $LogFile -value $LogMessage
}
$Logfile = "C:\windows\fontinstall.log"
$SourceFolder = "\\resource.loc\SYSVOL\resource.loc\scripts\Fonts"
Add-Type -AssemblyName System.Drawing
$WindowsFonts = [System.Drawing.Text.PrivateFontCollection]::new()Get-ChildItem -Path $SourceFolder -Include *.ttf, *.otf -Recurse -File |
Copy-Item -Destination "$env:SystemRoot\Fonts" -Force -Confirm:$false -PassThru |
ForEach-Object {
WriteLog "Installing font file $_.Name"
$WindowsFonts.AddFontFile($_.fullname)
$RegistryValue = @{
Path = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts'
Name = $WindowsFonts.Families[-1].Name
Value = $_.Fullname
}
$RemoveRegistry = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"
Remove-ItemProperty -Name $($WindowsFonts.Families[-1].Name) -Path $RemoveRegistry
New-ItemProperty @RegistryValue
}
Как работает скрипт
– WriteLog: Функция логирования записывает время и действия в файл C:\windows\fontinstall.log.
– SourceFolder: Указывает сетевую папку с файлами шрифтов (.ttf, .otf).
– Copy-Item: Копирует шрифты в системный каталог.
– System.Drawing: Регистрирует шрифты в системе.
– New-ItemProperty: Добавляет информацию о шрифте в реестр.
В результате все файлы шрифтов из указанной папки будут установлены в Windows, а в лог файл попадет информацию о времени установки шрифта.
Развертывание скрипта через GPO
1. Сохраните скрипт в файл, например, InstallFonts.ps1, в папке NETLOGON:
\\resource.loc\SYSVOL\resource.loc\scripts
2. Создайте или отредактируйте GPO (например, GPO_InstallFonts).
3. Перейдите в:
User Configuration -> Policies -> Windows Settings -> Scripts (Logon/Logoff) -> Logon
(Конфигурация пользователя -> Политики -> Параметры Windows -> Сценарии (вход/выход) -> Вход).
4. Добавьте скрипт:
– Script Name: \\resource.loc\SYSVOL\resource.loc\scripts\InstallFonts.ps1
– Script Parameters: (оставьте пустым).
5. Убедитесь, что политика применяется к нужной OU.
Проверка и диагностика
1. Выполните gpupdate /force на клиентском компьютере.
2. Проверьте наличие шрифтов в Settings -> Personalization -> Fonts.
3. Проверьте лог-файл C:\windows\fontinstall.log для анализа выполненных действий.
4. Если скрипт не сработал, убедитесь, что:
– PowerShell Execution Policy позволяет запуск скриптов (Set-ExecutionPolicy RemoteSigned).
– Учетная запись компьютера имеет доступ к сетевой папке.
3. Рекомендации и устранение неполадок
– Диагностика GPO: Используйте gpresult /r для проверки применения политики.
– Права доступа: Убедитесь, что клиенты имеют права на чтение файлов шрифтов в сетевой папке.
– Совместимость: Тестируйте шрифты на одной машине перед массовым развертыванием.
– Логирование: Лог-файл PowerShell-скрипта помогает отслеживать ошибки установки.
– Обновление политик: Если политика не применяется, проверьте настройки DNS и доступность контроллера домена.
Установка шрифтов в домене Active Directory может быть выполнена через GPO для небольшого количества шрифтов или с помощью PowerShell для массового развертывания. GPO удобен для точечной настройки, а PowerShell-скрипт экономит время при работе с множеством шрифтов, обеспечивая логирование. Оба метода требуют проверки доступа к файлам и корректной конфигурации политик. Используйте gpresult и лог-файлы для диагностики, чтобы гарантировать успешную установку шрифтов на всех компьютерах домена.