脚本安装字体powershell
我有一个脚本,在检查字体是否存在后安装字体。但是,我在验证字体是否存在时遇到问题脚本安装字体powershell,powershell,fonts,Powershell,Fonts,我有一个脚本,在检查字体是否存在后安装字体。但是,我在验证字体是否存在时遇到问题 $FONTS = 0x14; $FromPath = "c:\fonts"; $ObjShell = New-Object -ComObject Shell.Application; $ObjFolder = $ObjShell.Namespace($FONTS); $CopyOptions = 4 + 16; $CopyFlag = [String]::Format("{0:x}", $CopyOption
$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
}
}
你的if陈述是错误的
If ((Test-Path "c:\windows\fonts\$($File.name)") -eq $False)
testpath
如果文件存在,则返回true
;如果文件不存在,则返回false
。因此,在文件不存在的情况下,您有false-eq false
=true
,因此不会执行任何操作。仅当项目已存在时,才会调用用于复制该项目的代码
解决方案:
If (Test-Path "c:\windows\fonts\$($File.name)")
你的if陈述是错误的
If ((Test-Path "c:\windows\fonts\$($File.name)") -eq $False)
testpath
如果文件存在,则返回true
;如果文件不存在,则返回false
。因此,在文件不存在的情况下,您有false-eq false
=true
,因此不会执行任何操作。仅当项目已存在时,才会调用用于复制该项目的代码
解决方案:
If (Test-Path "c:\windows\fonts\$($File.name)")
保罗是对的。基本上你的情况是倒退的 如果(测试路径“c:\windows\fonts\$($File.name)”) 相当于 If((测试路径“c:\windows\fonts\$($File.name)”)-eq$True)
两种方法都可以,尽管第二种方法不必要地更加复杂。保罗是正确的。基本上你的情况是倒退的 如果(测试路径“c:\windows\fonts\$($File.name)”) 相当于 If((测试路径“c:\windows\fonts\$($File.name)”)-eq$True)
两种方法都可以,但第二种方法不必要地更复杂。您的问题到底是什么?错误在(else)中,出现一条消息,要求替换现有字体。这不应该发生,因为(else)应该安装不存在的字体!您的问题到底是什么?错误在(else)中,出现一条消息,要求替换现有字体。这不应该发生,因为(else)应该安装不存在的字体!