当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 GPO 和 PowerShell 在 Windows 中安装字体

作者:精品下载站 日期:2024-12-14 23:09:14 浏览:13 分类:玩电脑

使用 GPO 和 PowerShell 在 Windows 中安装字体


在本文中,我们将展示如何使用组策略和 PowerShell 脚本在 Active Directory 域中的计算机上安装其他字体。本指南在当前的 Windows 10 20H2 和 Windows Server 2016/2019 版本上进行了测试。

通过 GPO 部署新字体

如果您想安装一两种新字体,可以使用组策略来完成。要安装字体,请将 *.ttf 文件复制到客户端计算机上的 %WindowsDir%\Fonts\,并将新字体信息添加到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts 注册表项。

  1. 将 TTF 字体文件复制到文件服务器上的共享网络文件夹(如果您只有一些新字体,可以将它们存储在域控制器上的 SYSVOL 文件夹中);

    [玩转系统] 使用 GPO 和 PowerShell 在 Windows 中安装字体

  2. 打开域组策略管理控制台(

    gpmc.msc

    ),创建一个新策略 GPO_InstallFonts 并将其链接到具有计算机的 OU;

    [玩转系统] 使用 GPO 和 PowerShell 在 Windows 中安装字体

  3. 编辑政策;

  4. 在组策略首选项中创建新规则,将字体文件从共享文件夹复制到

    %WindowsDir%\Fonts\

    在您的客户端设备上。之前我们展示了如何使用 GPO 将文件复制到计算机。按照这些说明创建组策略。转到计算机配置 -> 首选项 -> Windows 设置 -> 文件。使用以下参数创建策略条目:来源:

    \a-d.site\SYSVOL\a-d.site\scripts\Fonts\Roboto-Black.ttf

    目的地:

    %WindowsDir%\Fonts\Roboto-Black.ttf

    [玩转系统] 使用 GPO 和 PowerShell 在 Windows 中安装字体

  5. 现在您需要将有关新字体的信息添加到注册表中。要使用 GPO 更改注册表,您还可以使用 GPP(计算机配置 -> 首选项 -> Windows 设置 -> 注册表);

  6. 您可以在注册表中手动指定字体信息。但是,在参考计算机上手动安装字体并使用向导导出字体注册表设置(计算机配置 -> 首选项 -> Windows 设置 -> 注册表 -> 新建 -> 注册表向导)会更容易;

    [玩转系统] 使用 GPO 和 PowerShell 在 Windows 中安装字体

  7. 使用注册表浏览器转到远程计算机上的HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts注册表项。找到并选择包含您要安装的字体名称的注册表项;

    [玩转系统] 使用 GPO 和 PowerShell 在 Windows 中安装字体

  8. 注册表参数将出现在 GPO 编辑器中。

[玩转系统] 使用 GPO 和 PowerShell 在 Windows 中安装字体

然后更新客户端计算机上的 GPO 设置并确保已安装新的字体文件。在 Windows 10 中,您可以在“设置”->“个性化”->“字体”中查看已安装字体的列表。

[玩转系统] 使用 GPO 和 PowerShell 在 Windows 中安装字体

如果尚未安装字体文件,请确保使用 gpresult 工具将策略分配给计算机。然后按照常规方法解决将 GPO 设置应用于计算机的问题。

使用 PowerShell 登录脚本安装 Windows 字体

如果您只想安装某些字体,那么值得使用上述使用 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 = "\a-d.site\SYSVOL\a-d.site\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
}

[玩转系统] 使用 GPO 和 PowerShell 在 Windows 中安装字体

将 PowerShell 脚本保存为 PS1 文件,并使用 GPO 将其作为登录脚本运行。

因此,指定文件夹中的所有字体文件都将安装在 Windows 中,并且将记录安装日期和时间。

[玩转系统] 使用 GPO 和 PowerShell 在 Windows 中安装字体

如果您需要删除 Windows 中的所有其他字体并恢复默认字体,请按照本指南进行操作。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯