
В этой статье мы покажем, как установить дополнительные шрифты на компьютеры в домене Active Directory с помощью групповой политики и сценария PowerShell. Данное руководство было протестировано на текущих сборках Windows 10 20H2 и Windows Server 2016/2019.
Развертывание новых шрифтов с помощью GPO
Если вам нужно установить один или два новых шрифта, вы можете сделать это с помощью групповой политики. Чтобы установить шрифт, скопируйте файл *.ttf в %WindowsDir%\Fonts\ на клиентском компьютере и добавьте информацию о новом шрифте в файл HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts ключ реестра.
- Скопируйте файл шрифта TTF в общую сетевую папку на файловом сервере (если у вас есть только несколько новых шрифтов, вы можете сохранить их в папке SYSVOL на контроллере домена);
- Откройте консоль управления групповой политикой домена (
gpmc.msc
), создайте новую политику GPO_InstallFonts и свяжите ее с OU с компьютерами; - Отредактируйте политику;
- Создайте новое правило в Предпочтениях групповой политики для копирования файла шрифта из общей папки в
%WindowsDir%\Fonts\
на клиентские устройства. Ранее мы показали, как копировать файл на компьютеры с помощью GPO. Создайте групповую политику, следуя этим инструкциям. Перейдите к Конфигурация компьютера -> Предпочтения -> Параметры Windows -> Файлы. Создайте запись политики с указанными ниже параметрами:Источник:\\woshub.com\SYSVOL\woshub.com\scripts\Fonts\Roboto-Black.ttf
Назначение:%WindowsDir%\Fonts\Roboto-Black.ttf
- Теперь вам нужно добавить информацию о новом шрифте в реестр. Для внесения изменений в реестр с помощью GPO можно также использовать GPP (Computer Configuration -> Preferences -> Windows Settings -> Registry);
- Можно указать информацию о шрифтах в реестре вручную. Однако проще установить шрифт вручную на эталонном компьютере и экспортировать параметры реестра шрифтов с помощью мастера (Computer Configuration -> Preferences -> Windows Settings -> Registry -> New -> Registry Wizard);
- Используйте Браузер реестра перейти к HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts ключ реестра на удаленном компьютере. Найдите и выберите элемент реестра, содержащий название шрифта, который вы хотите установить;
- Параметр реестра появится в редакторе GPO.
Затем обновите параметры GPO на клиентском компьютере и убедитесь, что новый файл шрифта был установлен. В Windows 10 список установленных шрифтов можно просмотреть в разделе Настройки -> Персонализация -> Шрифты.
Установка шрифтов Windows с помощью сценария входа в систему PowerShell
Описанный выше метод установки шрифтов с помощью GPO стоит использовать, если вам нужно установить только некоторые шрифты. Если вы хотите установить сразу много новых шрифтов, лучше использовать сценарий PowerShell, поскольку создание специальных параметров политики для каждого шрифта может быть утомительным.
Следующий сценарий PowerShell установит все *.ttf и *.otf файлы шрифтов, расположенные в указанной общей папке. Кроме того, скрипт записывает все действия в файл журнала с помощью функции WriteLog.
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\posh_font_install.log"
$SourceFolder = "\\woshub.com\SYSVOL\woshub.com\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
}
Сохраните сценарий PowerShell в виде файла PS1 и запустите его в качестве сценария входа в систему с помощью GPO.
Таким образом, все файлы шрифтов из указанной папки будут установлены в Windows, а дата и время установки будут занесены в журнал.