Mam folder wypełniony plików TTF czcionek niestandardowych. Muszę zainstalować je jako czcionki systemowe za pomocą skryptu powershell (jest to w systemie Windows Server 2008 R2). Czy ktoś wie, jak to zrobić w grze powershell? Dzięki!Instalacja czcionki systemowej z PowerShell
Odpowiedz
Jest to dość proste. Spójrz na poniższym fragmencie:
$FONTS = 0x14
$objShell = New-Object -ComObject Shell.Application
$objFolder = $objShell.Namespace($FONTS)
$objFolder.CopyHere("C:\test\Myfont.ttf")
I nie powinny wymagać, aby ponownie uruchomić/wylogowanie ...
Wartość 0x14 jest CLSID specjalnego folderu.
Ponadto Właśnie znalazłem ten samouczek wyjaśniający każdy krok powyżej:
http://windowsitpro.com/scripting/trick-installing-fonts-vbscript-or-powershell-script
prostu chciałem pisać alternatywę, która nie wymaga 0x14
być zakodowana w skrypcie. Przekazać obiekt pliku do funkcji, a to po prostu uruchomić „Install” na podstawie której plik jest:
Function Install-Font {
Param (
[Parameter(Mandatory=$true,ValueFromPipeline=$true)][System.IO.FileSystemInfo[]]$File
)
$shell = New-Object -ComObject Shell.Application
$File | % {
$Fonts = $shell.NameSpace($_.Directory.Name)
$font = $Fonts.ParseName($_.Name)
$font.InvokeVerb("Install")
}
}
'$ shell = New-Object -ComObject Shell.Application' nie działa ze mną, tylko w trybie interaktywnym. Jakiekolwiek warunki wstępne? – VillasV
Używanie obiektu Shell.Application
COM nie działa na Server Core (przynajmniej nie na 2012 R2).
miałem sukces, po prostu kopiując plik czcionki do C:\Windows\Fonts
(w tym przypadku times.ttf), a następnie dodanie odpowiedniego wpisu do rejestru za pomocą PowerShell:
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts' -Name 'Times New Roman (TrueType)' -PropertyType String -Value times.ttf
usunięcie jest odwrotnością instalacji. Jedynym minusem jest to, że ponowne uruchomienie jest wymagane zarówno po zainstalowaniu czcionki, jak i przed jej odinstalowaniem, jeśli aplikacja odwołuje się do niej.
kodShell został znany nie na zdalne i zbudować agentów - jeśli comobjects wykorzystujące powłokę zawodzą i są lustracji poprzez zdalny lub zbudować agentów następnie trzeba będzie użyć klas ramowe to zrobić (reference)
## Add or Remove Font Files - only tested with TTF font files thus far
#<#
#=======================================================================================================
# ADD or REMOVE MULTIPLE FONT FILES [Using ComObjects]
#=======================================================================================================
# This code will install or uninstall a font using ComObject
# You Must Modify the following variables in order to work
# (A) $dirFiles ==> This is the source folder path that contains all of your font files
# (B) $InstallOrUninstall ==> $true = Install Font ... $false = UnInstall Font
#=======================================================================================================
# Define Working Variables
$dirFiles = "C:\Temp\Fonts"
$InstallOrUninstall = $false # $true = Install = 1 ...or... $false = UnInstall = 0
$srcFontFiles = Get-ChildItem "$($dirFiles)\Fonts"
$Fonts = (New-Object -ComObject Shell.Application).Namespace(0x14)
# Copy each file into the Font Folder or Delete it - Depends on the $InstallOrUninstall variable setting
ForEach($srcFontFile in $srcFontFiles)
{
$srcFontFileName = $srcFontFile.name
$srcFontFileFullPath = $srcFontFile.fullname
$targFonts = "C:\Windows\Fonts\$($srcFontFileName)"
If (Test-Path $targFonts -PathType any) { Remove-Item $targFonts -Recurse -Force } # UnInstall Font
If ((-not(Test-Path $targFonts -PathType container)) -and ($InstallOrUninstall -eq $true)) { $fonts.CopyHere($srcFontFileFullPath, 16) } # Install Font
}
#>
Shellcode jest znana na niepowodzenie na zdalne i zbudować agentów - jeśli comobjects wykorzystujące powłokę zawodzą i są lustracji poprzez zdalny lub zbudować agentów następnie trzeba będzie użyć klas ramowe to zrobić - Numer: http: // www .codewrecks.com/blog/index.php/2016/05/27/uniknąć wykorzystujących-shell-Command-in-PowerShell scipts/ – Derrick
należy dodać pewne wyjaśnienie –
zobaczyć link i dostarczone w moim poprzednim komentarzu - ma wszystko musisz wiedzieć – Derrick
- 1. użyj systemowej czcionki jednobrzmiącej w gtk textview
- 2. Sposób programowego dostępu do czcionki systemowej iOS
- 3. Jak uzyskać domyślny rozmiar czcionki systemowej w Qt?
- 4. GPU - mapowanie pamięci systemowej
- 5. Zmiana właściwości systemowej user.home
- 6. Otwieranie okna z ikony tacki systemowej
- 7. Zmienić "Rozmiar czcionki (DPI) w Windows" w Powershell?
- 8. czcionki UILabel: pogrubienie i kursywa
- 9. używanie sendBroadcast w aplikacji systemowej
- 10. Wstawianie daty systemowej do oracle
- 11. instalacja pip z gitosis
- 12. C# uzyskać wykorzystanie sieci systemowej
- 13. Jak otworzyć okno konsoli Powershell z Powershell
- 14. StringFormat z grubością czcionki
- 15. Instalacja Glassfish JRE nie znaleziono
- 16. mało pamięci systemowej w puli zasobów „wewnętrzną”
- 17. Czcionki internetowe i zastępcze czcionki
- 18. Instalacja CXF z Eclipse 3.5
- 19. Instalacja vimball z linii poleceń
- 20. Instalacja niektórych plików z CMake
- 21. Powershell - zmiana wartości zmiennej środowiskowej
- 22. Zmiana działania czcionki ponownie uruchamia się.
- 23. Wywoływanie PowerShell z C#
- 24. Wywołanie PowerShell z NodeJS
- 25. http żądań z powershell
- 26. PowerShell - Kompilacja z modułów
- 27. Wywołanie MSTest z PowerShell
- 28. Jak ustawić profil sprężyny ze zmiennej systemowej?
- 29. Chart.js osi rozmiar czcionki czcionki
- 30. LogonUser -> CreateProcessAsUser ze usługi systemowej
Dzięki! Wypróbuję to. Co oznacza 0x14? Czy to jest wartość przestrzeni nazw czcionek? – carlbenson
Tak, zredagowałem kod z odpowiedzią i linkiem, proszę to sprawdzić. – gustavodidomenico
Działa idealnie. Dziękuję Ci! – carlbenson