Использование Com-объекта «Shell.Application» для получения сведений о файлах не ограничивается папкой %SystemRoot%\Fonts
.
Если у вас есть папка на диске, где хранится коллекция шрифтов, вы можете используйте приведенный ниже код для получения информации для каждого из файлов шрифтов:
function Get-FontInfo {
[CmdletBinding()]
[OutputType([Psobject])]
Param (
[Parameter(Mandatory=$true, ValueFromPipeline=$true)]
[string]$SourceFolder,
[switch]$Recurse
)
# using a lookup hashtable to avoid localized field names
$fontProperties = [ordered]@{
0 = 'Name'
1 = 'Size'
2 = 'Type'
20 = 'Author'
21 = 'Title'
25 = 'Copyright'
33 = 'Company'
34 = 'Description'
164 = 'Extension'
165 = 'FileName'
166 = 'Version'
194 = 'Path'
196 = 'FileType'
310 = 'Trademark'
}
$shell = New-Object -ComObject "Shell.Application"
$objDir = $shell.NameSpace($SourceFolder)
$files = Get-ChildItem -Path $SourceFolder -Filter '*.*' -File -Recurse:$Recurse
foreach($file in $files) {
$objFile = $objDir.ParseName($file.Name)
$mediaFile = $objDir.Items()
$output = [ordered]@{}
$fontProperties.GetEnumerator() | ForEach-Object {
$name = $objDir.GetDetailsOf($mediaFile, $_.Name)
if (![string]::IsNullOrWhiteSpace($name)) {
$output[$_.Value] = $objDir.GetDetailsOf($objFile, $_.Name)
}
}
[PsCustomObject]$output
}
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objFile)
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objDir)
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($shell)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
}
Get-FontInfo -SourceFolder 'D:\Test' # the path of the font folder
Если у вас есть подпапки внутри исходной папки, также добавьте переключатель -Recurse
.
Выведите что-то вроде:
Name : aparaj.ttf
Size : 194 kB
Type : TrueType-lettertypebestand
Author :
Title : Aparajita
Copyright : Copyright (c) 2011, Modular Infotech, Pune, INDIA. - Licenced to Microsoft
Company :
Description : This font is primarily meant for use in displaying Hindi text in documents. It is an OpenType font, based on Unicode.
Extension : .ttf
FileName : aparaj.ttf
Version : 6.00
Path : D:\Test\aparaj.ttf
FileType : TrueType-lettertypebestand
Trademark :