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

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

Установка шрифта через групповые политики

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

  1. Скопируйте ttf файл шрифта в общую папку на файловом сервере (если шрифтов немного, можно использовать для хранения шрифтов каталог SYSVOL на контроллере домена); сетевай папка, в которой хранятся файлы шрифтов
  2. Запустите редактор доменных GPO (gpmc.msc), создайте новую политику GPO_InstallFonts и назначьте ее на OU с компьютерами; групповая политика для установки шрифтов на компьютеры домена
  3. Перейдите в режим редактирования политики;
  4. С помощью Group Policy Preferences нужно создать правило для копирования файла шрифта из сетевой папки в каталог %WindowsDir%\Fonts\ на клиентах. Ранее мы показывали, как скопировать файл на компьютеры через GPO. Создайте политику по аналогии. Перейдите в Computer Configuration -> Preferences -> Windows Settings -> Files. Создайте политику с параметрами:

    Source: \\resource.loc\SYSVOL\resource.loc\scripts\Fonts\Roboto-Black.ttf
    Destination:  %WindowsDir%\Fonts\Roboto-Black.ttf

    скопировать ttf файл шрифта в каталог %WindowsDir%\Fonts\

  5. Теперь нужно внести в реестр информацию о новом шрифте. Для внесения изменения в реестр через GPO можно также использовать GPP (Computer Configuration -> Preferences -> Windows Settings -> Registry);
  6. Вы можете вручную указать информацию о шрифте в реестре. Но гораздо проще вручную установить шрифт на любой компьютером и с помощью мастера импортировать настройки ключа реестра (Computer Configuration -> Preferences -> Windows Settings -> Registry -> New -> Registry Wizard); мастер импорта параметров реестра с удаленного компьютера в GPO
  7. С помощью Registry Browser перейдите в ветку HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts на удаленном компьютере. Найдите и выделите параметр реестра с именем шрифта, который вы хотите установить; настройки шрифта в реестра
  8. В редакторе GPO должен появиться этот параметр реестра.

параметры шрифта для реестра

Теперь нужно обновить настройки групповых политик на клиенте и проверить, что новый шрифт установился. В Windows 10 список установленных шрифтов доступен в новой панели управления (Settings -> Personalization -> Fonts).

новый шрифт в панели управления windows 10

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

Установка шрифтов с помощью логон скрипта 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\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
}

powershell скрипт для установки множетсва шрифтов из сетевой папки в windows 10

Сохраните данный PowerShell скрипт в PS1 файл и запускайте как логон скрипт через GPO.

В результате все файлы шрифтов из указанной папки будут установлены в Windows, а в лог файл попадет информацию о времени установки шрифта.

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

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


Предыдущая статья Следующая статья


Комментариев: 2 Оставить комментарий

Оставить комментарий

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

Я не робот( Обязательно отметьте)