Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

ติดตั้งฟอนต์ใน Windows ด้วย GPO และ PowerShell

ในบทความนี้ เราจะแสดงวิธีการติดตั้งฟอนต์เพิ่มเติมบนคอมพิวเตอร์ในโดเมน Active Directory โดยใช้ Group Policy และสคริปต์ PowerShell คู่มือนี้ได้รับการทดสอบบน Windows 10 20H2 และ Windows Server 2016/2019 แล้ว

เนื้อหา

การปรับใช้ฟอนต์ใหม่ผ่าน GPO

หากคุณต้องการติดตั้งฟอนต์เพียงหนึ่งหรือสองตัว สามารถทำได้ผ่าน Group Policy โดยการคัดลอกไฟล์ *.ttf ไปที่ %WindowsDir%\Fonts\ บนคอมพิวเตอร์ไคลเอ็นต์ และเพิ่มข้อมูลฟอนต์ใหม่ลงในคีย์รีจิสทรี HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

  1. คัดลอกไฟล์ฟอนต์ TTF ไปยังโฟลเดอร์เครือข่ายที่แชร์บนไฟล์เซิร์ฟเวอร์ (หากมีเพียงไม่กี่ตัว สามารถเก็บไว้ในโฟลเดอร์ SYSVOL บนโดเมนคอนโทรลเลอร์ได้)
  2. เปิดคอนโซลจัดการ Group Policy ของโดเมน (gpmc.msc) สร้างนโยบายใหม่ชื่อ GPO_InstallFonts และเชื่อมโยงกับ OU ที่มีคอมพิวเตอร์
  3. แก้ไขนโยบาย
  4. สร้างกฎใหม่ใน Group Policy Preferences เพื่อคัดลอกไฟล์ฟอนต์จากโฟลเดอร์ที่แชร์ไปที่ %WindowsDir%\Fonts\ บนอุปกรณ์ไคลเอ็นต์ เราเคยแสดงวิธีคัดลอกไฟล์ไปยังคอมพิวเตอร์ด้วย GPO ไปแล้ว สร้างนโยบายกลุ่มตามคำแนะนำเหล่านี้ ไปที่ Computer Configuration → Preferences → Windows Settings → Files สร้างรายการนโยบายด้วยพารามิเตอร์ดังนี้:
    Source: \\woshub.com\SYSVOL\woshub.com\scripts\Fonts\Roboto-Black.ttf
    Destination: %WindowsDir%\Fonts\Roboto-Black.ttf
  5. เพิ่มข้อมูลฟอนต์ใหม่ลงในรีจิสทรี สามารถใช้ GPP ได้เช่นกัน (Computer Configuration → Preferences → Windows Settings → Registry)
  6. สามารถระบุข้อมูลฟอนต์ในรีจิสทรีด้วยตนเอง แต่จะง่ายกว่าหากติดตั้งฟอนต์ด้วยตนเองบนคอมพิวเตอร์อ้างอิง แล้วส่งออกการตั้งค่ารีจิสทรีของฟอนต์โดยใช้วิซาร์ด (Computer Configuration → Preferences → Windows Settings → Registry → New → Registry Wizard)
  7. ใช้ Registry Browser ไปที่คีย์รีจิสทรี HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts บนคอมพิวเตอร์ระยะไกล ค้นหาและเลือกพารามิเตอร์รีจิสทรีที่มีชื่อฟอนต์ที่ต้องการติดตั้ง
  8. พารามิเตอร์รีจิสทรีจะปรากฏในตัวแก้ไข GPO

จากนั้นอัปเดตการตั้งค่า GPO บนคอมพิวเตอร์ไคลเอ็นต์ และตรวจสอบว่าไฟล์ฟอนต์ใหม่ถูกติดตั้งแล้ว ใน Windows 10 สามารถดูรายการฟอนต์ที่ติดตั้งได้ที่ Settings → Personalization → Fonts

หากไฟล์ฟอนต์ยังไม่ได้ติดตั้ง ให้ตรวจสอบว่านโยบายถูกมอบหมายให้คอมพิวเตอร์โดยใช้เครื่องมือ gpresult จากนั้นทำตามขั้นตอนการแก้ไขปัญหาการใช้ GPO ตามปกติ

ติดตั้งฟอนต์ Windows ด้วยสคริปต์ PowerShell Logon

วิธีการติดตั้งฟอนต์ผ่าน GPO ที่อธิบายข้างต้นเหมาะสำหรับการติดตั้งฟอนต์เพียงไม่กี่ตัว หากต้องการติดตั้งไฟล์ฟอนต์จำนวนมากพร้อมกัน การใช้สคริปต์ PowerShell จะดีกว่า เนื่องจากจะลดความยุ่งยากในการสร้างตัวเลือกนโยบายพิเศษสำหรับแต่ละฟอนต์

สคริปต์ PowerShell ต่อไปนี้จะติดตั้งไฟล์ฟอนต์ *.ttf และ *.otf ทั้งหมดที่อยู่ในโฟลเดอร์ที่แชร์ตามที่ระบุ นอกจากนี้ สคริปต์ยังบันทึกการดำเนินการทั้งหมดลงในไฟล์ล็อกโดยใช้ฟังก์ชัน WriteLog

function WriteLog
{
    Param ([string]$LogString)
    $Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
    $LogMessage = "$Stamp $LogString"
    Add-content $LogFile -value $LogMessage
}
$Logfile = "C:\Windows\posh_font_install.log"
$SourceFolder = "\\woshub.com\SYSVOL\woshub.com\scripts\Fonts"
Add-Type -AssemblyName System.Drawing
$WindowsFonts = [System.Drawing.Text.PrivateFontCollection]::new()
Get-ChildItem -Path $SourceFolder -Include *.ttf, *.otf -Recurse -File |
Copy-Item -Destination "$env:SystemRoot\Fonts" -Force -Confirm:$false -PassThru |
ForEach-Object {
    WriteLog "Installing font file $_.name"
    $WindowsFonts.AddFontFile($_.fullname)
    $RegistryValue = @{
        Path = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts'
        Name = $WindowsFonts.Families[-1].Name
        Value = $_.Fullname
    }
    $RemoveRegistry = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"
    Remove-ItemProperty -name $($WindowsFonts.Families[-1].Name) -path $RemoveRegistry
    New-ItemProperty @RegistryValue
}

บันทึกสคริปต์ PowerShell เป็นไฟล์ PS1 และรันเป็นสคริปต์ Logon ผ่าน GPO

ดังนั้น ไฟล์ฟอนต์ทั้งหมดจากโฟลเดอร์ที่ระบุจะถูกติดตั้งใน Windows และวันที่เวลาการติดตั้งจะถูกบันทึกล็อก

หากต้องการลบฟอนต์เพิ่มเติมทั้งหมดใน Windows และคืนค่าเป็นค่าเริ่มต้น โปรดทำตามคู่มือนี้