zamsi7
Goto Top

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! face-smile

LG Simon

Content-ID: 303013

Url: https://administrator.de/forum/powershell-fonts-installieren-und-existierende-ueberschreiben-303013.html

Ausgedruckt am: 22.12.2024 um 22:12 Uhr

MrCount
MrCount 27.04.2016 um 14:47:23 Uhr
Goto Top
Hallo Simon!

Mindestens eins davon sollte funktionieren:

1.
$objFolder.CopyHere($File.fullname, 0x14) 

2.
[System.Int32]$yesToAll = 16
$objFolder.CopyHere($File.fullname, $yesToAll)
127944
127944 27.04.2016 um 15:00:21 Uhr
Goto Top
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."  
}
zamsi7
zamsi7 27.04.2016 um 15:04:19 Uhr
Goto Top
Hallo,

und vielen Dank für deine rasche Antwort!!

Doch leider hat beides nicht funktioniert face-sad
Hatte es zuvor bereits mir 0x14 und 16 versucht.. und was noch so alles angegeben werden kann.

Die Abfrage erscheint nach wie vor.

LG
zamsi7
zamsi7 27.04.2016 um 15:32:04 Uhr
Goto Top
Danke aber leider Nein.. Die Meldung erscheint auch hier noch.

Insofern ich es auch richtig gemacht habe x)
119944
119944 27.04.2016 um 15:32:39 Uhr
Goto Top
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
127944
127944 27.04.2016 um 15:34:12 Uhr
Goto Top
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?
zamsi7
zamsi7 27.04.2016 um 15:41:41 Uhr
Goto Top
Sorry.. hätte eigentlich auf Kommentieren geklickt ^^

Auf dein Script. Die Meldung erscheint nach wie vor.
zamsi7
zamsi7 27.04.2016 um 15:48:38 Uhr
Goto Top
Danke! Optionen sind immer erwünscht :D

Aber in diesem Fall sollte dies nicht mittels GPOs funktionieren sondern manuell ausgeführt werden können.

LG
114757
114757 28.04.2016 aktualisiert um 21:25:25 Uhr
Goto Top
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