Last active
October 15, 2024 03:11
-
-
Save anthonyeden/0088b07de8951403a643a8485af2709b to your computer and use it in GitHub Desktop.
Font User Installation - Powershell (No Admin Password Needed)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Run this as a Computer Startup script to allow installing fonts from C:\InstallFont\ | |
# Based on http://www.edugeek.net/forums/windows-7/123187-installation-fonts-without-admin-rights-2.html | |
# Run this as a Computer Startup Script in Group Policy | |
# Full details on my website - https://mediarealm.com.au/articles/windows-font-install-no-password-powershell/ | |
$SourceDir = "C:\InstallFont\" | |
$Source = "C:\InstallFont\*" | |
$Destination = (New-Object -ComObject Shell.Application).Namespace(0x14) | |
$TempFolder = "C:\Windows\Temp\Fonts" | |
# Create the source directory if it doesn't already exist | |
New-Item -ItemType Directory -Force -Path $SourceDir | |
New-Item $TempFolder -Type Directory -Force | Out-Null | |
Get-ChildItem -Path $Source -Include '*.ttf','*.ttc','*.otf' -Recurse | ForEach { | |
If (-not(Test-Path "C:\Windows\Fonts\$($_.Name)")) { | |
$Font = "$TempFolder\$($_.Name)" | |
# Copy font to local temporary folder | |
Copy-Item $($_.FullName) -Destination $TempFolder | |
# Install font | |
$Destination.CopyHere($Font,0x10) | |
# Delete temporary copy of font | |
Remove-Item $Font -Force | |
} | |
} |
I've taken some of the work in this thread along with my own work. It's aimed at storing the fonts in a zip file on a file server share in each AD site and copying the zip file of the font(s) locally then expanding it.
https://gist.github.com/cosine83/e83c44878a6bdeac0c7c59e3dbfd1f71
nice stript dude. It's funny I just showed this to a designer and it blew his mind as the fonts just get installed one by one! I love coding!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@Sansoria thank you so much! This is exactly what I was looking for, a small code that fits perfectly in a function (plus it works better than others I had found). Tested on Windows 10 Pro 20H2 x64, installs fonts system wide and shows them in Settings and Control Panel.
Also may I suggest you an improvement, although I'm new to PowerShell:
when executing
New-ItemProperty
, use$null = New-ItemProperty ...
instead ofNew-ItemProperty ... | Out-Null
for better performance.Source: https://powershell-guru.com/powershell-best-practice-12-avoid-out-null/
Thanks again, I wish you a great day :)