Script Schriftarten installieren powershell
Ich habe ein Skript installiert eine schriftart, nach der überprüfung, ob die Schriften vorhanden sind oder nicht. Allerdings hab ich Probleme mit der Validierung der Existenz der Schrift.
$FONTS = 0x14;
$FromPath = "c:\fonts";
$ObjShell = New-Object -ComObject Shell.Application;
$ObjFolder = $ObjShell.Namespace($FONTS);
$CopyOptions = 4 + 16;
$CopyFlag = [String]::Format("{0:x}", $CopyOptions);
foreach($File in $(Get-ChildItem -Path $FromPath)){
If ((Test-Path "c:\windows\fonts\$($File.name)") -eq $False)
{ }
Else
{
$CopyFlag = [String]::Format("{0:x}", $CopyOptions);
$ObjFolder.CopyHere($File.fullname, $CopyOptions);
New-ItemProperty -Name $File.fullname -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Fonts" -PropertyType string -Value $File
}
}
- was genau ist dein problem?
- der Fehler ist in der (sonst), kommt eine Meldung, ersetzen Sie die vorhandenen Schriftarten . Sollte dies nicht passieren, weil (sonst), sollte die Installation der Schriften, die nicht existieren !
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre if-Anweisung falsch ist
Test-Path
zurücktrue
wenn die Datei vorhanden ist undfalse
wenn es nicht. Also in dem Fall die Datei nicht vorhanden ist, haben Siefalse -eq false
=true
so wird nichts ausgeführt. Ihren code zu kopieren das Element wird nur aufgerufen, wenn es bereits vorhanden ist.Lösung:
Paul ist richtig. Im Grunde ist deine If-Bedingung wurde rückwärts.
If (Test-Path "c:\windows\fonts\$($File.name)")
entspricht
If ((Test-Path "c:\windows\fonts\$($File.name)") -eq $True)
Entweder wird funktionieren, aber der zweite ist unnötig komplexer.