GPOとPowerShellを使用してWindowsにフォントをインストールする方法

この記事では、Active Directory環境内の複数のWindowsマシンにGPOまたはPowerShellスクリプトを使用して追加フォントをインストールする基本的な手順をほぼ網羅しています。分かりやすいと思いませんか?しかし、フォントが表示されなかったりGPOが機能していないように見える場合など、これらの手順だけでは不十分な場合があります。Windowsはフォント登録に関して頑固なところがあり、レジストリの調整やファイルのコピーを一度で試してもうまくいかないことがあります。

私の経験では、フォントが正しくインストールされない場合は、まずレジストリキーとファイルの権限を再確認することをお勧めします。また、GPOの更新に関する問題にも注意してください。Windowsは遅延したり、ポリシーがすぐに適用されなかったりする傾向があるため、gpupdate /forceコマンドラインで実行したり、クライアントデバイスを再起動したりすると問題が解決することがよくあります。場合によっては、クライアントPCからフォントファイルにアクセスできること、およびレジストリエントリが正しいことを確認するだけで済むこともあります。

グループポリシーを使用してフォントを適切に展開する方法

フォントファイルがクライアントPCからアクセス可能であることを確認する

  • *.ttf または *.otf ファイルを、すべてのクライアントコンピュータがアクセスできる共有フォルダにコピーします。専用の共有フォルダを作成するか、ドメインコントローラ上の共通の SYSVOL フォルダに配置します。すべてのコンピュータがファイルを読み取れるように、アクセス許可が設定されていることを確認してください。
  • 共有パスの例: \\woshub.com\SYSVOL\woshub.com\scripts\Fonts

この手順は非常に重要です。クライアントがフォントにアクセスできない場合、何も起こりません。ファイルアクセスやGPOの適用に関連するエラーがあるかどうかは、イベントビューアーですぐに確認できます。

フォントファイルをコピーしてレジストリを更新するようにGPOを構成する

  • グループ ポリシー管理コンソールで、「GPO_InstallFonts」などの GPO を作成または編集します。
  • 「コンピューターの構成」→「基本設定」→「Windowsの設定」→「ファイル」に移動します。ここで、ネットワーク共有からフォントファイルを直接 にコピーするためのルールを設定します。 「ソース」には 、 「コピー先」%WindowsDir%\Fontsには と同様のパスを使用します。\\woshub.com\SYSVOL\woshub.com\scripts\Fonts\Roboto-Black.ttf%Windir%\Fonts\Roboto-Black.ttf
  • 競合を避けるため、コピー アクションが「置換」または「更新」に設定されていることを確認してください。
  • 次に、レジストリを更新してフォントを登録します。レジストリ設定項目を作成することでこれを行うことができます。「コンピューターの構成」→「基本設定」→「Windowsの設定」→「レジストリ」 。HKLM \SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fontsに新しいキーを設定します。値のデータはフォントファイル名と一致する必要があります(例:”Roboto-Black (TrueType)” = “Roboto-Black.ttf”)。

この組み合わせにより、GPOが適用されると、フォントファイルがすべてのクライアントにコピーされ、登録されます。GPOgpupdate /forceをリンクした後、クライアントで実行して、すぐに有効になることを確認してください。

このトリックが機能する理由

このプロセスは、基本的に手動インストールを自動化します。フォントファイルをFontsフォルダにコピーし(Windowsがインストールを開始します)、適切なレジストリエントリを追加してWindowsが認識できるようにします。Windowsによっては、フォントがフォントリストに表示されたり、アプリが認識し始めたりする前に、レジストリの調整が必要になる場合があります。各マシンでファイルを手動でコピーしてレジストリを編集するのは大変なので、GPOを使えば手間が大幅に省けます。

PowerShellでフォントをインストールする:便利なショートカット

GPOをスキップしてスクリプトを使用する理由

プッシュするフォントが少数の場合、またはGPOアプローチが使いにくいと感じる場合は、PowerShellが役に立ちます。特に多数のフォントを扱う場合は、すべてのファイルをループ処理し、コピーとレジストリへの登録を一度に処理するスクリプトを作成する方が、より高速で柔軟性があります。さらに、ログ機能を追加することで、問題が発生した場合のトラブルシューティングも容易になります。

サンプル PowerShell スクリプトの説明

  • このスクリプトは、すべての *.ttf および *.otf ファイルを共有フォルダーから%SystemRoot%\Fonts(基本的にはC:\Windows\Fonts) にコピーします。
  • HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fontsを使用して各フォントのレジストリにエントリを追加し、Windows がフォントを認識できるようにします。
  • すべてのインストール手順がログ ファイルに記録されるので、奇妙な問題のトラブルシューティングに便利です。

ちょっとしたヒントですが、このスクリプトを最初に手動で実行するか、グループポリシーまたはスケジュールされたタスク経由でプッシュすることをお勧めします。スクリプトの実行後でも、すべてのアプリでフォントが完全に利用可能になるまで、ログオフ/再ログオンまたは再起動が必要になる場合があることにご注意ください。

ああ、追加したフォントをすべて削除してデフォルトに戻したい場合はどうすればいいですか?レジストリをクリアしてカスタムフォントファイルを削除する方法もありますが、それはまた別の話です。(そのためのガイドへのリンクはこちらにありますので、そちらが参考になるかもしれません。)

Windowsはフォントのインストール方法に細心の注意を払わないため、試行錯誤が必要になることもあります。しかし、重要なのは、アクセス許可、正しいレジストリエントリ、そしてフォントファイルがどこからでもアクセス可能であることを確認することです。