LGPO.exe は、ドメイン外の Windows マシンでローカルグループポリシーを管理するための便利なコマンドラインツールです。しかし、もちろん完璧ではありません。よくある悩みの種は、エクスポートまたはインポート時に/gスイッチが機能しないことです。コマンドは実行されているように見えても、ポリシーが実際には適用または保存されないことがあります。特に、セキュリティベースラインを自動化したり、各マシンに手動でログインせずに設定を整理したりしようとしている場合は、非常にイライラします。幸いなことに、これらの問題のほとんどは、構文の癖、ファイル形式、または互換性のないポリシーデータに起因しています。これらの問題を解決するには、通常、ある程度の調査とコマンドラインの魔法が必要になります。ここでは、実際の経験に基づいて、うまくいく方法をご紹介します。
エクスポートまたはインポート操作中に LGPO.exe /g が動作しない問題を修正
ほとんどの問題は、パスのフォーマットミス、バックアップファイル内のドメイングループ参照、ファイルのエンコードの誤りといった単純な問題が原因で発生します。場合によっては、小さなタイプミスや間違ったエンコードで保存されたファイルでさえ、LGPO.exe が動作を停止してしまうことがあります。以下に、この問題の解決に役立つ一般的な修正方法をご紹介します。通常、これらの問題に対処することでポリシーはスムーズに適用されますが、奇妙なエラーが繰り返し発生する場合は、トラブルシューティングを行う準備をしておきましょう。
パスをスペースで囲む — もちろん、Windowsでは必要以上に難しくする必要があるため
これは、想像以上に多くの人がつまずく類のものです。バックアップフォルダやファイルパスにスペース( などC:\My Policies\Backup
)が含まれている場合は、必ず引用符で囲む必要があります。そうしないと、コマンドプロンプトやPowerShellが複数の引数を渡していると誤認識し、すべてが台無しになる可能性があります。少し奇妙に思えますが、LGPO.exe が「ファイルが見つかりません」または「無効なパラメータです」と表示した場合は、引用符をもう一度確認することをお勧めします。
たとえば、次のようにコマンドを実行します。
LGPO.exe /g "C:\My Policies\LGPO Backup"
必ず管理者権限のコマンドプロンプトで実行してください。そのためには、「コマンドプロンプト」を右クリックし、「管理者として実行」を選択してください。それでもコマンドが失敗する場合は、スペースを含まない短いパスで簡単なテストを試してみると、問題が引用符にあるのか、それとも他の何かにあるのかを診断するのに役立ちます。
ユーザー権限の割り当てエラーを修正する – ローカルマシン上のドメイングループを参照しないようにする
LGPO.exe は、ポリシーファイルに「Domain Admins」などのドメイン固有のグループが含まれているため、処理が滞ることがあります。マシンがドメインに属していない場合、これらの参照は無効です。LGPO がポリシーを適用する際に、これらのドメイングループを有効な SID に解決できず、エラーが発生したり、ポリシーの適用が不完全になったりすることがあります。多くの環境で効果があった簡単な回避策をご紹介します。
- バックアップ フォルダー (通常は[YourBackupFolder]\DomainSysvol\GPO\Machine\Microsoft\Windows NT\SecEdit\GptTmpl.infの下) に移動します。
- GptTmpl.inf をメモ帳などのテキストエディタで開きます。必ず事前にバックアップコピーを作成してください。ここでの作業内容は絶対に失いたくないはずです。
- 特権権限セクションで次のような行を探します。
SeRemoteInteractiveLogonRight = *S-1-5-21-XYZ, Domain Admins
- Domain Admins をAdministratorsなどのローカルグループ名に置き換えます。基本的に、ポリシーはドメインではなくマシンに合わせてローカライズされます。
- ファイルをANSIエンコードで保存します。Notepad++を使えば、エンコード > ANSIエンコードに変換 と進むだけで簡単にできます。
編集後、LGPOインポートコマンドを再実行してください。ドメイングループに関連する権限割り当ての失敗はなくなり、ポリシーは正常に適用されるはずです。設定によっては、再起動するか、gpupdate /forceでポリシーを手動で更新する必要がある場合もありますが、多くの場合、グループ参照を修正するだけで済みます。
複雑なポリシーを扱う場合はSeceditを使用する。LGPOでは必ずしも十分ではないため。
高度なセキュリティポリシーなどは、LGPO.exe の /g スイッチでは複雑すぎるかもしれません。その代わりに、組み込みのseceditツールはセキュリティテンプレートをネイティブにエクスポートおよびインポートするように設計されており、この種のタスクにおいてより信頼性の高いものとなっています。これは、現在のポリシーから.inf ファイルを生成し、それを LGPO に渡して適用またはマージするというものです。
次のコマンドを使用して、ソース マシンからポリシーをエクスポートします。
secedit /export /cfg C:\temp\security_policies.inf /areas SECURITYPOLICY
次に、ターゲット マシンで次のコマンドを適用します。
LGPO.exe /m C:\temp\security_policies.inf
この方法は、監査設定やユーザー権限など、LGPOの/gでは対応が難しい複雑なポリシーに適しています。ただし、.infファイルは互換性が確保されている必要があるため、自信がない限り、手動で編集して破損させないようにしてください。
LGPO.exeのパーサーはうるさいので、正しいファイルエンコーディングを確認して設定してください。
.infファイルやバックアップファイルがBOM(バイトオーダーマーク)付きのUTF-8で保存されている場合、LGPOは不可視文字を認識してエラーをスローする可能性があります。修正方法は簡単ですが、見落とされがちです。Notepad++で該当ファイルを開き、「エンコード」>「ANSIに変換」を選択して再度保存してください。これにより、ファイルはLGPOが完全に理解できるプレーンASCII形式になります。まるで魔法のようですが、少なくともそう感じるほどです。実際には、単に適切なフォーマットになっているだけです。
ANSIで保存した後、インポートを再試行してください。通常、これで奇妙な解析エラーは解消されます。ある環境では、最初の数回は失敗しましたが、エンコードを変換するとうまくいきました。なぜうまくいくのかは分かりませんが、確かにうまくいきます。
LGPOポリシーをエクスポートおよびインポートする方法
現在のローカル ポリシーをダンプするには、次のコマンドを実行します。
LGPO.exe /g <PathToBackupFolder>
ローカルポリシーとドメインポリシーを含む完全バックアップが、指定のフォルダに作成されます。フォルダはアクセスと書き込みが可能である必要があります。復元する場合は、バックアップフォルダを指定して同じコマンドを実行し、必ず管理者として実行してください。
グループ ポリシーが失敗する原因は何ですか?
多くの場合、障害の原因はネットワークの問題(ドメインポリシーに起因する場合)、権限の設定ミス、またはローカルキャッシュの破損です。マシンがドメインコントローラーにアクセスできない場合、または特定の設定を変更する権限がない場合、LGPOまたはグループポリシーオブジェクト(GPO)の処理が機能しなくなります。場合によっては、ビルドの不具合や競合するポリシーの蓄積が原因で、システムが変更を適用できないこともあります。これらのトラブルシューティングには、ネットワーク接続と権限を確認し、競合するポリシーが使用されていないことを確認することが含まれます。
これらのヒントが、LGPO.exe のストレスを軽減してくれることを願っています。LGPO.exe は少し扱いにくいツールですが、適切な調整を行えば、大抵は必要な機能を発揮します。
まとめ
- パスにスペースが含まれている場合は引用符で囲みます。
- マシンがドメインに参加していない場合は、ポリシー ファイル内のドメイン グループを置き換えるか削除します。
- LGPO を適用する前に、secedit を使用して複雑なポリシーをより適切に処理します。
- ファイルが BOM 付きの UTF-8 ではなく、ANSI/ASCII 形式で保存されていることを確認してください。
まとめ
ほとんどの問題は、単純な書式設定や参照の間違いに帰結します。それらを修正すれば、LGPO.exe はスムーズに動作するようになります。時には探偵のような作業が必要になることもありますが、これらのちょっとしたコツをつかめば、ローカルポリシーの適用はそれほど面倒ではなくなります。これで、誰かが数時間も頭を悩ませる時間を省くことができるといいですね。