@ Tim-Brigham teve a ideia certa, mas é um pouco mais complicado.
Primeiro, crie um domínio de compartilhamento de rede em que os computadores tenham acesso read . Como você chamará um script com privilégios de sistema desse compartilhamento, é importante que eles possam ler somente.
Neste compartilhamento de rede, crie também uma pasta com todas as fontes que você deseja instalar.
Em seguida, crie este script na pasta da rede:
$path = "<path to font folder on network share>"
$shell = New-Object -ComObject Shell.Application
$fonts = $shell.Namespace($path).Items()
# check if font already exists in windows font folder, if not, install
foreach($font in $fonts)
{
$sourcepath = $font.path
$filename = Split-Path -Leaf $sourcepath
$destinationpath = 'C:\Windows\fonts\' + $filename
if (![System.IO.File]::Exists($destinationpath))
{
$font.InvokeVerbEx("Install")
}
}
Em seguida, crie uma tarefa agendada por GPO:
Computer Configuration -> Preferences -> Control Panel Settings -> Scheduled Task
Action: Update
Use the following User Account: S-1-5-18
Run with highest privileges
Triggers: At logon
Actions: Start a program: powershell.exe -NonInteractive -WindowStyle Hidden -ExecutionPolicy bypass -File <scriptpath>
É importante usar a conta de usuário S-1-5-18 aqui, isto é NT-Authority / SYSTEM, mas se você usar o literal NT-Authority / SYSTEM, o mapeamento de usuários não funcionará.
Os usuários precisarão fazer log-on / on duas vezes. Uma vez para instalar fontes, mas o cache de fontes não é atualizado até o login.