PowerShellからローカルグループポリシーをエクスポートする場合は、MicrosoftのLGPO.exeを呼び出してGPOバックアップ形式で保存できます。PowerShell標準のコマンドレットではなく、Security Compliance Toolkitに含まれる外部ツールです。旧ツールのLocalGPOと混同しないでください。
また、「設定のバックアップ」と「現在適用されているポリシーの結果レポート」は別です。LGPOの出力だけで、ドメインGPO、MDM、すべてのローカル設定や端末全体の復旧をカバーできるわけではありません。本記事はエクスポートと内容確認を中心に説明し、本番への一括インポートは扱いません。
目的に応じてツールを選ぶ

ローカルポリシーをGPOバックアップ形式で保存:LGPO.exeの/bを使います。
セキュリティ設定をINFとして出力:secedit /exportを検討します。管理用テンプレートなどを含む全ローカルGPOの代わりにはなりません。
実際に適用されたGPOを調査:gpresultの結果を確認します。これは復元用のバックアップではありません。
会社の管理端末では、ローカルに保存した設定と、ドメインGPOやMDMなどから実際に適用される設定が異なることがあります。バックアップには取得日時、端末名、Windowsの版、ドメイン参加・管理状態、使用ツールの版を記録し、何を保存した資料なのかを明確にします。
LGPO.exeを公式配布元から準備する
MicrosoftのSecurity Compliance Toolkit案内から公式ダウンロードへ進み、LGPOを取得・展開します。同梱の説明書で対応環境と構文を確認してください。旧LocalGPO用のスクリプトを代用したり、非公式サイトの実行ファイルを使ったりしないでください。
例ではLGPO.exeを C:\Tools\LGPO\LGPO.exe に置いたものとします。実際の展開先へ置き換えてください。管理者としてPowerShellを開き、保存先は組織で許可された、アクセスを制限できる場所を選びます。クラウド同期される個人フォルダーへ無意識に出力しないようにします。
PowerShellで現在のフォルダーにある外部プログラムを実行する場合は .\LGPO.exe、パスを文字列や変数で渡す場合は呼び出し演算子 & を使います。LGPO.exeがPATHに登録されていなければ、名前だけでは見つかりません。エクスポートのために実行ポリシーやセキュリティ製品を無効化する必要はありません。
PowerShellからバックアップを実行する

次は、毎回別の出力フォルダーを作成し、LGPO.exeでローカルポリシーをエクスポートする例です。C:\PolicyBackupsは例なので、管理者が認めた保存先へ変更してください。ツールと保存先を確認してから実行します。
$ErrorActionPreference = 'Stop'
$Lgpo = 'C:\Tools\LGPO\LGPO.exe'
$Root = 'C:\PolicyBackups'
if (-not (Test-Path -LiteralPath $Lgpo -PathType Leaf)) {
throw "LGPO.exeが見つかりません: $Lgpo"
}
$Stamp = Get-Date -Format 'yyyyMMdd-HHmmss'
$Run = Join-Path $Root ("LocalPolicy-{0}-{1}" -f $Stamp, [guid]::NewGuid().ToString('N'))
New-Item -ItemType Directory -Path $Run -ErrorAction Stop | Out-Null
& $Lgpo /b $Run /n "LocalPolicy-$env:COMPUTERNAME-$Stamp"
$ExitCode = $LASTEXITCODE
if ($ExitCode -ne 0) {
throw "LGPO.exeが終了コード $ExitCode を返しました。表示内容と出力を確認してください。"
}
Get-ChildItem -LiteralPath $Run -Recurse -File |
Select-Object FullName, Length, LastWriteTime
/bはバックアップ先、/nはGPOバックアップの表示名です。/nで指定した名前が、そのまま保存フォルダー名になるとは限りません。表示名のフォルダーを探すのではなく、指定した出力先に生成されたバックアップ一式を確認してください。
PowerShellの例では、外部プログラムの終了コードを直後に確認しています。フォルダーが作られただけ、またはコマンドの表示が終わっただけで成功と判断しません。エラーが出た場合は、部分的にできた出力を完成したバックアップとして扱わないでください。本記事ではWindows実機での実行結果を掲載していません。
バックアップの中身を確認する
生成されたフォルダーの構造を維持して保存します。Registry.pol、セキュリティテンプレート、監査設定、バックアップのメタデータなどを確認し、必要な設定が対象に含まれるかを同梱資料と照合してください。設定がない項目のファイルは存在しない場合もあるため、「すべての例示ファイルが必ずある」とは判断しません。
GptTmpl.infなどのテキストは、コピーを読み取り用に開いて確認します。Registry.polはバイナリ形式なので、メモ帳で読めないことを破損の根拠にしないでください。LGPOにはRegistry.polをLGPO text形式へ解析する機能があります。使用版のヘルプを確認したうえで、実在するバックアップ内のファイルを指定します。
# 実在するコンピューター側Registry.polのパスへ置き換える
& $Lgpo /parse /m 'C:\PolicyBackups\実際のバックアップ\Machine\Registry.pol'
# ユーザー側のファイルなら /m ではなく /u を使う
上はパス指定の構文例で、生成フォルダー構造を示す固定パスではありません。先ほどのGet-ChildItemで実際のファイルを探し、コンピューター側かユーザー側かを確認してください。解析結果を修正して適用する操作は、単なる閲覧とは別です。
seceditとgpresultを併用する場合

セキュリティ設定だけを別ファイルへ記録するなら、既に作成した今回の出力フォルダーに次のように保存できます。/exportは出力です。名前の似た/configureなどの適用操作へ置き換えないでください。
$Inf = Join-Path $Run 'security-export.inf'
$Log = Join-Path $Run 'secedit-export.log'
secedit.exe /export /cfg $Inf /log $Log
$ExitCode = $LASTEXITCODE
if ($ExitCode -ne 0) { throw "seceditの出力とログを確認してください: $ExitCode" }
/mergedpolicyはドメインとローカルのセキュリティ設定を結合して出力するオプションです。純粋なローカルGPOのバックアップと混同しないよう、使用したオプションも記録してください。seceditのINFで管理用テンプレートやすべての端末設定を丸ごと保存できるわけではありません。
適用されたGPOの調査資料も必要なら、HTMLレポートを別に取得します。コンピューター側の結果は管理者権限が必要になる場合があります。別の管理者として起動している場合、対象ユーザーの結果と取り違えないようにしてください。
$Report = Join-Path $Run 'gpresult.html'
gpresult.exe /h $Report
if ($LASTEXITCODE -ne 0) { throw 'gpresultのエラー表示を確認してください。' }
LGPOバックアップ、secedit出力、gpresultレポートは用途が違います。レポートが開けたことは、バックアップから復元できたことの確認ではありません。
よくあるエラーと安全な対処

LGPO.exeが認識されない:ファイルの展開先と実行構文を確認します。アクセス拒否:管理者として実行しているか、保存先へ書き込めるか、組織の実行制御に反していないかを確認します。保護機能を停止して回避するのではなく管理者に相談します。
バックアップ名のフォルダーがない:/nは表示名なので、出力先にできたフォルダーを一覧で確認します。想定した設定がない:その設定がローカルGPO、ドメインGPO、MDM、アプリ独自設定のどこで管理されているかを調べます。未対応の設定まで保存できると推測しないでください。
失敗の原因を、ログやエラーを見ずに「リソース不足」と決めつけないでください。再試行する場合は新しい出力フォルダーを使い、途中の出力と成功した出力を混在させないようにします。
保管・比較と復元時の注意
バックアップにはユーザー・グループ名、SID、ネットワークパス、セキュリティ構成などが含まれる場合があります。公開リポジトリや個人クラウドへ置かず、閲覧者を必要な管理者に限定します。別の場所へ複製した際は、ファイル数やハッシュなどで転送を確認する方法もありますが、それだけで復元の動作保証にはなりません。
Policy Analyzerは構成の比較に利用できますが、出力を見たことだけで完全性や法令適合を保証できるわけではありません。差分は設定の意図と実際の適用結果を合わせて評価します。
復元・他端末への適用は、エクスポートとは異なる変更作業です。OSや役割の違い、SID、アクセス権、リモート管理やサインインへの影響を確認し、検証環境でテストしてから変更計画と復旧手段を用意します。LGPOバックアップを持っていることを理由に、本番端末へ一括適用しないでください。
公式資料
Microsoft:Security Compliance ToolkitとLGPO
Microsoft:LGPOの基本構文と旧LocalGPOからの置き換え
Microsoft:secedit /export
Microsoft:gpresult



コメント