Powershell Fonts installieren und existierende überschreiben
Hallo an alle,
ich hätte wieder mal ein Powershell Problem.
Ich möchte gerne ein script schreiben welches diverse Schriften installiert. Das funktioniert soweit ganz gut, doch leider sind hin und wieder bereits einige
Schriften installiert. Dann Erscheint die Meldung, dass die Schrift bereits installiert ist und ob man diese ersetzen möchte. Die Meldung muss dann mit Ja oder Nein bestätigt werden.
Das wird jedoch zum Problem, wenn man mehrere schriften hat und dann jedesmal auf ja oder nein klicken muss.
Ich hätte gerne, dass diese Meldung nicht erscheint. Bzw. automatisch bestätigt wird. Ob man auf Ja klickt oder Nein oder einfach eine ENTER Eingabe verwendet wäre doch egal.
Hätte jemand von euch eine Idee was man hier machen könnte? Oder welche Zeile ich hinzufügen muss?
Mein Script:
$FONTS = 0x14
$Path = "c:\Test\Fonts2\"
#$ConfirmPreference=”high” <-- Habe ich gegooglet, aber funktioniert leider nicht ( Oder mach ich es einfach falsch x) )
$objShell = New-Object -ComObject Shell.Application
$objFolder = $objShell.Namespace($FONTS)
New-Item $Path -type directory -Force
Copy-Item -path "c:\Test\Fonts\*" -recurse $Path
$Fontdir = dir $Path -recurse | Where-Object {$_.extension -eq ".otf"}
foreach($File in $Fontdir) {
$objFolder.CopyHere($File.fullname)
}
Danke schon mal für euer Hilfe!
LG Simon
ich hätte wieder mal ein Powershell Problem.
Ich möchte gerne ein script schreiben welches diverse Schriften installiert. Das funktioniert soweit ganz gut, doch leider sind hin und wieder bereits einige
Schriften installiert. Dann Erscheint die Meldung, dass die Schrift bereits installiert ist und ob man diese ersetzen möchte. Die Meldung muss dann mit Ja oder Nein bestätigt werden.
Das wird jedoch zum Problem, wenn man mehrere schriften hat und dann jedesmal auf ja oder nein klicken muss.
Ich hätte gerne, dass diese Meldung nicht erscheint. Bzw. automatisch bestätigt wird. Ob man auf Ja klickt oder Nein oder einfach eine ENTER Eingabe verwendet wäre doch egal.
Hätte jemand von euch eine Idee was man hier machen könnte? Oder welche Zeile ich hinzufügen muss?
Mein Script:
$FONTS = 0x14
$Path = "c:\Test\Fonts2\"
#$ConfirmPreference=”high” <-- Habe ich gegooglet, aber funktioniert leider nicht ( Oder mach ich es einfach falsch x) )
$objShell = New-Object -ComObject Shell.Application
$objFolder = $objShell.Namespace($FONTS)
New-Item $Path -type directory -Force
Copy-Item -path "c:\Test\Fonts\*" -recurse $Path
$Fontdir = dir $Path -recurse | Where-Object {$_.extension -eq ".otf"}
foreach($File in $Fontdir) {
$objFolder.CopyHere($File.fullname)
}
Danke schon mal für euer Hilfe!
LG Simon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 303013
Url: https://administrator.de/contentid/303013
Ausgedruckt am: 05.11.2024 um 17:11 Uhr
9 Kommentare
Neuester Kommentar
Der Code wurde von mir noch nicht getestet. Ich hatte ihn nur mal gefunden und als "könnte man mal brauchen" abgelegt:
$ssfFonts = 0x14
$fontSourceFolder = "\\PATH\TO\FONTS"
$Shell = New-Object -ComObject Shell.Application
$SystemFontsFolder = $Shell.Namespace($ssfFonts)
$FontFiles = Get-ChildItem $fontSourceFolder
$SystemFontsPath = $SystemFontsFolder.Self.Path
$rebootFlag = $false
foreach($FontFile in $FontFiles) {
# $FontFile will be copied to this path:
$targetPath = Join-Path $SystemFontsPath $FontFile.Name
# So, see if target exists...
if(Test-Path $targetPath){
# font file with the same name already there.
# delete and replace.
$rebootFlag = $true
Remove-Item $targetPath -Force
Copy-Item $FontFile.FullName $targetPath -Force
}else{
#install the font.
$SystemFontsFolder.CopyHere($FontFile.fullname)
}
}
#Follow-up message
if($rebootFlag){
Write-Host "At least one existing font overwritten. A reboot may be necessary."
}
Moin,
ich habe das bei unserer Hausschrift über Gruppenrichtlinien gelöst:
http://www.gruppenrichtlinien.de/artikel/fonts-schriftarten-verteilen
Vielleicht wäre das auch eine Option.
VG
Val
ich habe das bei unserer Hausschrift über Gruppenrichtlinien gelöst:
http://www.gruppenrichtlinien.de/artikel/fonts-schriftarten-verteilen
Vielleicht wäre das auch eine Option.
VG
Val
Zitat von @zamsi7:
Danke aber leider Nein.. Die Meldung erscheint auch hier noch.
Insofern ich es auch richtig gemacht habe x)
Selbstgespräch? Oder worauf bezieht sich das?Danke aber leider Nein.. Die Meldung erscheint auch hier noch.
Insofern ich es auch richtig gemacht habe x)
Moin,
prüfe einfach vorher ob eine Schriftart schon im Fonts-Ordner vorhanden ist und wenn ja installiere sie nicht.
Es gibt zwar bei der CopyHere Methode einen weiteren Parameter der eigentlich der richtige zum Unterdrücken der Abfrage wäre, jedoch zieht dieser Parameter beim Fonts-Ordner nicht (s. u. Link)
Die Workarounds dazu findest du hier:
http://stackoverflow.com/questions/12165856/how-do-i-pass-option-flags- ...
Gruß jodel32
prüfe einfach vorher ob eine Schriftart schon im Fonts-Ordner vorhanden ist und wenn ja installiere sie nicht.
Es gibt zwar bei der CopyHere Methode einen weiteren Parameter der eigentlich der richtige zum Unterdrücken der Abfrage wäre, jedoch zieht dieser Parameter beim Fonts-Ordner nicht (s. u. Link)
Die Workarounds dazu findest du hier:
http://stackoverflow.com/questions/12165856/how-do-i-pass-option-flags- ...
Gruß jodel32