|
|
- <#
- .SYNOPSIS
- Installs the provided fonts.
- .DESCRIPTION
- Installs all the provided fonts by default. The FontName
- parameter can be used to pick a subset of fonts to install.
- .EXAMPLE
- C:\PS> ./install.ps1
- Installs all the fonts located in the Git repository.
- .EXAMPLE
- C:\PS> ./install.ps1 furamono-, hack-*
- Installs all the FuraMono and Hack fonts.
- .EXAMPLE
- C:\PS> ./install.ps1 d* -WhatIf
- Shows which fonts would be installed without actually installing the fonts.
- Remove the "-WhatIf" to install the fonts.
- #>
- [CmdletBinding(SupportsShouldProcess)]
- param(
- # Specifies the font name to install. Default value will install all fonts.
- [Parameter(Position=0)]
- [string[]]
- $FontName = '*'
- )
-
- $fontFiles = New-Object 'System.Collections.Generic.List[System.IO.FileInfo]'
- foreach ($aFontName in $FontName) {
- Get-ChildItem $PSScriptRoot -Filter "${aFontName}.ttf" -Recurse | Foreach-Object {$fontFiles.Add($_)}
- Get-ChildItem $PSScriptRoot -Filter "${aFontName}.otf" -Recurse | Foreach-Object {$fontFiles.Add($_)}
- }
-
- $fonts = $null
- foreach ($fontFile in $fontFiles) {
- if ($PSCmdlet.ShouldProcess($fontFile.Name, "Install Font")) {
- if (!$fonts) {
- $shellApp = New-Object -ComObject shell.application
- $fonts = $shellApp.NameSpace(0x14)
- }
- $fonts.CopyHere($fontFile.FullName)
- }
- }
|