PowerShell(GPO)を使用してActive Directoryグループポリシーレポートを作成する方法

PowerShellを使用してActive Directoryグループポリシーレポートを作成します。 Get-GpoReport cmdletの助けを借りて、グループポリシー(GPO)に関するレポートを作成できます。これには、シンプルなテキストベースのものから完全なハイパーテキストマークアップ言語(HTML)レポートまでが含まれます。さらに、このレポート生成プロセスをPowerShellで自動化することができます。これにより、時間を節約し、Active Directory(AD)システムに関する重要な情報を取得できます。この記事では、PowerShell GPOモジュールのインポート、GPOのエクスポート、およびGPOを組織単位(OU)にリンクする方法について説明します。これは例として行われ、すべてが協力していくつかの優れたレポートを作成するための手順です。

では、PowerShellを使用してActive Directoryポリシーレポートを作成する方法を始めましょう。

PowerShellを使用してADグループポリシーレポート(GPO)を作成する

前提条件

この記事では、作成および既存のGPOを変更するいくつかの異なる状況について説明します。以下の例に従って進める場合は、次のものをすでに準備しておいてください:

  • Group PolicyのためのPowerShellモジュール。Windows 10を使用している場合は、RSATをダウンロードしてインストールするか、Windows Serverを使用している場合は、以下のPowerShellコマンドを使用できます:
Install-WindowsFeature -Name GPMC
  • A computer member of the same AD domain from which we will query GPOs.
  • GPOを読み取る権限を持つドメインユーザーアカウントを持つADに参加したコンピュータ。

Get-GpoReportを使用してHTMLレポートを生成する

まずは、単一のGPOがあると想像してみましょう。その設定を表示したいと同時に、HTMLレポートを生成して作業を始めたいと考えています。幸いなことに、Get-GpoReportは、GPOを検出し、PowerShellを使用してそれらをエクスポートすることができます。そのためには、GPOの名前またはGPOのグローバル一意識別子(GUID)が必要です。

そのため、詳細なHTMLレポートを作成するために少なくとも3つのパラメーターを使用する必要があります:

  • GPOを検索するための名前またはガイド。
  • ReportTypeパラメーターを使用して、生成するレポートの種類を指定します。HTMLまたはXML(Extensible Markup Language)のどちらかを選択できます。
  • レポートを保存したい場所を指定するパス。

たとえば、環境に GPOがある場合、GPOの名前がわかっているのであれば、ReportTypeHTMLの値に指定してHTMLレポートを作成し、このHTMLファイルを保存したいパスを指定することができます。

Get-GPOReport -Name 'Sample GPO' -ReportType 'HTML' -Path 'C:\Temp\SampleReport.html'

あるいは、以下の例で使用されているように、Guidパラメーターを使用してGPOを検索することもできますが、これは追加のステップです。

$gponame = (Get-GPO -Name 'Sample GPO').Id
Get-GPOReport -Guid $gponame -ReportType 'HTML' -Path 'C:\Temp\SampleReport.html'

準備ができたら、お好みのブラウザでレポートを表示できます。

すべてのGPOに対してHTMLレポートを生成する

代わりに、ドメイン全体のGPOに対するレポートを作成することもできます。この場合、All引数を使用してドメイン内のすべてのGPOをクエリする必要があります。ただし、今回は特定のGPOを指定するためのNameまたはGuidオプションではなく、Allスイッチパラメータを使用してすべてを見つけます。

Get-GPOReport -All -ReportType Html -Path "C:\Temp\All-SampleReport.html"

AD環境で使用される場合、Get-GPOReportコマンドレットはServerパラメータで指定されたドメインコントローラ(DC)に接続し、GPOを読み取ります。その後、利用可能なサーバーがない場合は、デフォルトでPDCエミュレータの役割を持つDCが使用されます。

次は、PowerShellを使用してActiveディレクトリポリシーレポートを作成する方法について説明します。XMLレポートを生成します。

Get-GpoReport で XML レポートを生成する

一般的に、PowerShell で GPO モジュール をインポートした後、Get-GPOReport が行えることは他にもあります。つまり、GPO をエクスポートして HTML レポート を作成するだけでなく、XML レポートも作成できます。たとえば、特定の GPO の XML レポート を作成する場合は、ReportType パラメータの値を HTML から XML に変更する必要があります。

たとえば、以下の例では既存の GPO、サンプル レポート をクエリし、XML レポートを作成します。そして、Invoke-Item コマンドを使用して XML ファイルのデフォルト アプリでそのレポートを開きます。

Get-GPOReport -Name 'Sample GPO' -ReportType Xml -Path "C:\temp\SampleReport.xml"
Invoke-Item -Path "C:\Temp\SampleReport.xml"

完了すると、以下のスクリーンショットのような XML ファイルが表示されます。

まず、GPO XMLノードにはすべてが含まれています。その中には、次のようなものがあります。識別子 (GPO GUID)、名前 (GPO名)、コメントを含めるセキュリティ 記述子SDDL そして、さらに多くの情報があります。

GPO XMLレポート

このXMLレポートをHTMLと区別するのは、フォーマットだけではありません。基本的に、HTMLレポートで見られる属性は、XMLレポートでも存在します。しかし、それらはより構造化され、解析が簡単です。

  • バージョンディレクトリ GPOのバージョンは、ADデータベースに格納されています。
  • VersionSysvol – GPOのバージョンは、SYSVOLに保存されています。
  • Enabled – 無効になっている場合、クライアントコンピュータ上のGPO処理エンジンは、ポリシーの対応する部分の設定を適用しません。

重要なことは、GPOを変更するとポリシーのバージョン(コンピュータまたはユーザー)が増加します。したがって、Group Policy処理エンジンは新しい設定を適用するタイミングやポリシーが変更されたときを判断することができます。さらに、この動作により、GPOを変更した後に/joint /forceスイッチを使用せずにgpupdate.exeを実行できます。

InfraSOSを使用してActive Directory Group Policyレポートを確認する

無料でお試しください、すべての機能にアクセスできます。– 200以上のADレポートテンプレートが利用可能です。簡単に独自のADレポートをカスタマイズできます。




GPMC

で、GPOのバージョン(ADおよびSYSVOL用)とその状態を表示できます。

クライアントのコンピュータは、VersionDirectoryVersionSysvol0の値を持っている間でも、Enabledtrueである場合でも、ポリシーを引き続き処理します。システムは処理エンジンに通知し、GPOの関連部分を実装する必要がないことを伝えます。構成を変更しても、比較的短いネットワーク上の高速コンピュータのパフォーマンスに影響を与えることはありません。それでも、このようなGPOの貴重な秒数を節約することができます、特に古いマシンや遅いネットワーク上の場合には。

したがって、クライアントマシン上の処理エンジンは、VersionDirectoryVersionSysvol0よりも高く、かつEnabledfalseに設定されているポリシーを適用しません。なぜ一部の設定が適用されないのかを尋ねることがあります。したがって、これが偶然か意図的かを調査することが重要です。

もし、GPOの内部動作に精通している場合は、Get-GPOReportコマンドを使用することができます。したがって、これはGPMCに移動する代わりに、プロパティを参照してこれらの設定を直接確認するためのものです。

あるいは、GPO内のいくつかの設定に焦点を当てたい場合があります。または最終的には、PowerShellを使用してOUにGPOをアタッチしたい場合があります。そのため、レポートを作成する必要がなくなります。

  1. Pathパラメーターをその状況で削除します。以下の例における[xml]キャストとPathパラメーターの不在に注意してください。
[xml]$GpoXml = Get-GPOReport -Name 'Sample GPO' -ReportType Xml

2. Get-GPOReportの出力をXMLオブジェクトに変換したので、簡潔なドット表記を使用してその多くのプロパティを迅速に参照できます。

$GpoXml.GPO.Computer
$GpoXml.GPO.User

3. foreachループを追加し、各GPO出力を処理するためにAll引数を使用します。

$AllGpos = Get-GPO -All
$GpoVersionInfo = foreach ($gpo in $gpos) {
    [xml]$g = Get-GPOReport -ReportType Xml -Guid $gpo.Id
    [PSCustomObject]@{
        "Name" = $g.GPO.Name
        "Comp-Ad" = $g.GPO.Computer.VersionDirectory
    }
}
$GpoVersionInfo | Sort-Object Name | Format-Table

XML GPOレポートの解析

Get-GPOReportが生成するXML出力を使用して、GPOの多くの側面について学ぶことができます。前述の例では、前のモデルの$GPOXML.GPO.Computerおよび$GPOXML.GPO.Userプロパティを見ると、以下に示すようにExtensionDataプロパティが表示されます。

以下に示すように、PowerShellでこれらのXMLノードにアクセスしてXMLデータに基づいたレポートを作成できます。

$PolicyDetails = foreach ($policy in $GpoXml.GPO.User.ExtensionData.Extension.Policy) {
    [PSCustomObject]@{
        "Name" = $policy.Name
        "State" = $policy.State
    }
}

$PolicyDetails

PowerShellを使用してActive Directoryポリシーレポートを作成する方法についての当社の記事ブログをお読みいただきありがとうございます。結びとさせていただきます。

PowerShellを使用してアクティブディレクトリグループポリシーレポートを作成する結論

ネイティブのグループポリシー管理コンソール(GPMC)に加えて、この記事ではHTMLおよびXML形式でエクスポートして包括的なレポートを生成する方法について説明しました。また、Get-GpoReportコマンドレットについても説明しました。このコマンドレットは、PowerShellを介してGPMCと同じ情報を取得できるようになりました。これにより、多くのGPOを同時にクエリできるため、優れたレポートの作成に役立ちます。

Source:
https://infrasos.com/create-active-directory-policy-reports-with-powershell/