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