Om de company fonts te installeren op intune managed devices heb ik een script en package gemaakt gemaakt die dit voor.  

voor de package maken gebruik ik  de IntuneWinAppUtil. In de source map zet je de folder Fonts met daarin de font files. en het script dat hier onder aan de pagina staat

 

 

dan start je vanuit het commandpromt de IntuneWinAppUtil.exe op en geeft de source en destination locatie op en het programma dat gestart moet worden in dit geval de SC-Deploymentfonts.ps1

 

 

Daarna word de intunewin file gemaakt deze kan je gebruiken in intune als WIN32 applicatie

voor de detection rule in de applicatie 

 

 

Kies je voor de Rule Type  File   paht  c:\windows\fonts en file een van de fontsnamen die je wil deployen.

 

param ([switch]$Silent)

<#  

    .NOTES

    ===========================================================================

     Created on:    2023-12-15

     Created by:    Vincent van Unen

   Organization:  %Organization%

     Filename:      SC-DeploymentFonts.ps1

    ===========================================================================

    .DESCRIPTION

        Default Fonts install on client

#>

#region Changelog

#################################################################################

# Version History

$ScriptAuthor = "Vincent van Unen"

$ScripVersion = "0.1"

$ScriptChangeDate = "2023-12-15"

$ScriptChangeLog = ""

$ScriptCurrentUser = $env:UserName

$Getcurrentdate = get-date -Format yyyy-MM-dd

$logname = "DeploymentFonts"

<# Change Log

[0.1]     2023-12-15    -   First Setup of script

#>

#endregion Changelog

#Script functions

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12   # Set Security protocol naar TLS12

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine -Force -WarningAction Ignore -ErrorAction Ignore

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -Force -WarningAction Ignore -ErrorAction Ignore

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser -Force  -WarningAction Ignore -ErrorAction Ignore

# Checking & Creatiglog en temp directory

$XIPMyModuleDir1 = "C:\temp"                                                                                              # Check of c:\temp dir bestaat mocht deze niet bestaan dan word deze aangemaakt

    if(!(Test-Path -Path $XIPMyModuleDir1 )){ New-Item -ItemType directory -Path $XIPMyModuleDir1 }

$XIPMyModuleDir2 = "C:\tmp"                                                                                               # Check of c:\tmp dir bestaat mocht deze niet bestaan dan word deze aangemaakt      

    if(!(Test-Path -Path $XIPMyModuleDir2 )){ New-Item -ItemType directory -Path $XIPMyModuleDir2 }    

$XIPMyModuleDir3 = "C:\log"                                                                                               # Check of c:\log dir bestaat mocht deze niet bestaan dan word deze aangemaakt    

    if(!(Test-Path -Path $XIPMyModuleDir3 )){ New-Item -ItemType directory -Path $XIPMyModuleDir3 }    

cls    

Function WriteToLogFile{

    [CmdletBinding()]

    Param(

        [Parameter(Mandatory=$False)]

        [ValidateSet("INFO","WARN","ERROR","FATAL","DEBUG")]

        [String] $Level = "INFO",

        [Parameter(Mandatory=$True)]

        [string] $Message,

        [Parameter(Mandatory=$False)]

        [string] $logfile = "$XIPMyModuleDir3\$logname $Getcurrentdate.log"

    )

    if ($Message -eq " "){

        Add-Content $logfile -Value " " -ErrorAction SilentlyContinue

    }else{

        $Date = (Get-Date).ToUniversalTime().ToString('yyyy-MM-dd HH:mm:ss.fff')

        Add-Content $logfile -Value "[$date] [$Level] $Message" -ErrorAction SilentlyContinue

    }

}

WriteToLogFile -Message "Curent Date = $Getcurrentdate"

WriteToLogFile -Message "Script Autor = $ScriptAuthor"

WriteToLogFile -Message "Script Version = $ScripVersion"

WriteToLogFile -Message "Script ChangeDate = $ScriptChangeDate"

WriteToLogFile -Message "Current User Running this script = $ScriptCurrentUser"

$TranscriptFile = "$XIPMyModuleDir3\$Getcurrentdate _$logname _Transcript.log"

Start-Transcript -Path $TranscriptFile

function Install-Fonts {

    param (

        [Parameter(Mandatory = $true)]

        [string]$FontFile

    )

    try {

        $font = $fontFile | split-path -Leaf

        If (!(Test-Path "c:\windows\fonts\$($font)")) {

            switch (($font -split "\.")[-1]) {

                "TTF" {

                    $fn = "$(($font -split "\.")[0]) (TrueType)"

                    break

                }

                "OTF" {

                    $fn = "$(($font -split "\.")[0]) (OpenType)"

                    break

                }

            }

            Copy-Item -Path $fontFile -Destination "C:\Windows\Fonts\$font" -Force

            New-ItemProperty -Name $fn -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Fonts" -PropertyType string -Value $font

        }

    }

    catch {

        write-warning $_.exception.message

    }

}

foreach ($f in $(Get-ChildItem $PSScriptRoot\fonts)) {

    Install-Fonts -FontFile $f.fullName

}

Stop-Transcript