Установка шрифтов в Windows с помощью GPO и PowerShell

В этой статье мы покажем, как установить дополнительные шрифты на компьютеры в домене Active Directory с помощью групповой политики и сценария PowerShell. Данное руководство было протестировано на текущих сборках Windows 10 20H2 и Windows Server 2016/2019.

Развертывание новых шрифтов с помощью GPO

Если вам нужно установить один или два новых шрифта, вы можете сделать это с помощью групповой политики. Чтобы установить шрифт, скопируйте файл *.ttf в %WindowsDir%\Fonts\ на клиентском компьютере и добавьте информацию о новом шрифте в файл HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts ключ реестра.

  1. Скопируйте файл шрифта TTF в общую сетевую папку на файловом сервере (если у вас есть только несколько новых шрифтов, вы можете сохранить их в папке SYSVOL на контроллере домена); копирование файлов шрифтов в общую папку
  2. Откройте консоль управления групповой политикой домена (gpmc.msc), создайте новую политику GPO_InstallFonts и свяжите ее с OU с компьютерами; создание gpo для установки шрифтов
  3. Отредактируйте политику;
  4. Создайте новое правило в Предпочтениях групповой политики для копирования файла шрифта из общей папки в %WindowsDir%\Fonts\ на клиентские устройства. Ранее мы показали, как копировать файл на компьютеры с помощью GPO. Создайте групповую политику, следуя этим инструкциям. Перейдите к Конфигурация компьютера -> Предпочтения -> Параметры Windows -> Файлы. Создайте запись политики с указанными ниже параметрами:Источник: \\woshub.com\SYSVOL\woshub.com\scripts\Fonts\Roboto-Black.ttf
    Назначение: %WindowsDir%\Fonts\Roboto-Black.ttfкопирование файла шрифта на компьютер с помощью групповой политики
  5. Теперь вам нужно добавить информацию о новом шрифте в реестр. Для внесения изменений в реестр с помощью GPO можно также использовать GPP (Computer Configuration -> Preferences -> Windows Settings -> Registry);
  6. Можно указать информацию о шрифтах в реестре вручную. Однако проще установить шрифт вручную на эталонном компьютере и экспортировать параметры реестра шрифтов с помощью мастера (Computer Configuration -> Preferences -> Windows Settings -> Registry -> New -> Registry Wizard); удаленный браузер реестра gpo
  7. Используйте Браузер реестра перейти к HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts ключ реестра на удаленном компьютере. Найдите и выберите элемент реестра, содержащий название шрифта, который вы хотите установить; выберите параметр шрифта в реестре
  8. Параметр реестра появится в редакторе GPO.

развертывание параметров реестра шрифтов с помощью групповой политики

Затем обновите параметры GPO на клиентском компьютере и убедитесь, что новый файл шрифта был установлен. В Windows 10 список установленных шрифтов можно просмотреть в разделе Настройки -> Персонализация -> Шрифты.

новый шрифт появился в Windows 10

Если файл шрифта не был установлен, убедитесь, что политика назначена компьютеру с помощью инструмента gpresult. Затем следуйте обычному способу устранения проблем с применением параметров GPO к компьютерам.

Установка шрифтов 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
}

Установка новых шрифтов в Windows с помощью сценария PowerShell

Сохраните сценарий PowerShell в виде файла PS1 и запустите его в качестве сценария входа в систему с помощью GPO.

Таким образом, все файлы шрифтов из указанной папки будут установлены в Windows, а дата и время установки будут занесены в журнал.

журнал установки шрифтов

Если вам нужно удалить все дополнительные шрифты в Windows и восстановить шрифты по умолчанию, следуйте этому руководству.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *