Crea rapporti di Group Policy di Active Directory con PowerShell (GPO)

Creare report di Group Policy di Active Directory con PowerShell. Con l’aiuto del cmdlet Get-GpoReport, possiamo produrre report sui Group Policies (GPO), che vanno dai semplici report basati su testo a report completi in HyperText Markup Language (HTML). Inoltre, possiamo automatizzare questo processo di generazione del report con PowerShell. Questo serve per risparmiare tempo e ottenere informazioni importanti sul tuo sistema di Active Directory (AD). In questo articolo, esamineremo come importare il modulo PowerShell GPO, esportare GPO e collegare i GPO a un’ Unità Organizzativa (OU). Questo sarà un esempio, in modo che possano funzionare insieme per produrre dei report di alta qualità .

Cominciamo con come Creare report di Policy di Active Directory con PowerShell.

Crea rapporti sulla Group Policy (GPO) di Active Directory con PowerShell

Prerequisiti

In questo articolo, esamineremo alcune situazioni diverse che coinvolgono la creazione e la modifica delle GPO esistenti. Assicurati di avere già i seguenti elementi se desideri seguire gli esempi:

  • Il modulo PowerShell per la Group Policy. Se stai utilizzando Windows 10, puoi trovarlo scaricando e installando RSAT, o se stai utilizzando Windows Server, puoi utilizzare il comando PowerShell seguente:
Install-WindowsFeature -Name GPMC
  • A computer member of the same AD domain from which we will query GPOs.
  • Un computer connesso a un dominio con un account utente con diritti per leggere le GPO.

Generazione di rapporti HTML con Get-GpoReport

Innanzitutto, immaginiamo di avere un singolo GPO. Quindi, vuoi visualizzare le impostazioni da esso (nonché generare un report HTML) per iniziare. Fortunatamente, Get-GpoReport può scoprire un GPO su entrambi e utilizzare PowerShell per esportarli. Per farlo, avremo bisogno del nome del GPO o del Globally Unique Identifier (GUID) del GPO.

Pertanto, dovrai utilizzare almeno tre parametri per creare un rapporto HTML dettagliato:

  • Nome o Guid per individuare il GPO.
  • ReportType parametro per specificare il tipo di rapporto da generare. Possiamo scegliere tra HTML o XML (Extensible Markup Language).
  • Percorso per specificare dove vorremmo che il rapporto venisse salvato.

Forse abbiamo un GPO nel tuo ambiente. Ad esempio, possiamo specificare il ReportType di un valore HTML per un rapporto HTML e il percorso in cui vorresti salvare questo file HTML se conosciamo il nome del GPO, come nell’esempio.

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

In alternativa, potremmo utilizzare il parametro Guid per trovare il GPO, ma questa è un’operazione aggiuntiva utilizzando l’esempio riportato di seguito.

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

Possiamo visualizzare il rapporto nel tuo browser preferito una volta preparato.

Generazione di rapporti HTML per tutti i GPO

In alternativa, per creare un rapporto su tutti i GPO a livello di dominio. In questa situazione, dobbiamo utilizzare l’argomento All per interrogare tutti i GPO nel dominio. Tuttavia, questa volta, invece di utilizzare l’opzione Name o Guid per designare un GPO specifico, stiamo utilizzando il parametro di commutazione All per trovarli tutti.

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

Quando utilizzato in un ambiente AD, il cmdlet Get-GPOReport contatta un domain controller (DC) specificato dal parametro Server per leggere i GPO. In seguito, se nessun server è disponibile, verrà utilizzato di default il DC con il ruolo di PDC Emulator.

Prossimo passo su come creare rapporti di policy di Active Directory con PowerShell è generare rapporti XML.

Generare report XML con Get-GpoReport

In generale, una volta importato il modulo GPO in PowerShell, ci sono altre cose che Get-GPOReport può fare. Ciò significa che, oltre all’esportazione delle GPO e alla produzione di report HTML, possiamo anche produrre report XML. Ad esempio, dovremmo modificare il valore del parametro ReportType da HTML a XML se volessimo creare un report XML per una specifica GPO.

Per esempio, di seguito interroghiamo una GPO esistente, Sample Report, per produrre un report XML. Successivamente, apriamo quel report utilizzando il comando Invoke-Item nell’app predefinita per i file XML:

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

Una volta completato, vedremo il file XML come nello screenshot qui sotto.

In primo luogo, notiamo che il nodo XML GPO contiene tutto. All’interno di esso, possiamo trovare cose come Identifier (il GUID GPO), Name (Il nome GPO), Include Comments, Security Descriptor, SDDL e molte altre informazioni.

Rapporto GPO XML

Oltre al formato, cosa rende questo rapporto XML diverso da HTML? Fondamentalmente, gli attributi presenti nel rapporto HTML sono anche presenti nel rapporto XML. Ma sono più strutturati e più facili da analizzare.

  • VersionDirectory Versione del GPO memorizzata nel database AD.
  • VersionSysvol – Versione del GPO memorizzata in SYSVOL.
  • Abilitato – Se disabilitato, il motore di elaborazione GPO sul computer client non applicherà le impostazioni nella parte corrispondente della politica.

In particolare, la versione della politica (computer o utente) aumenta quando modifichiamo un GPO. Di conseguenza, il motore di elaborazione delle Criteri di Gruppo potrà determinare quando applicare nuove impostazioni e quando una politica è cambiata. Inoltre, questo comportamento ci permetterà di avviare gpupdate.exe dopo aver modificato un GPO senza utilizzare lo switch /force combinato.

Verifica i report dei Criteri di Gruppo di Active Directory utilizzando InfraSOS

Provaci gratuitamente, accesso a tutte le funzionalità. – 200+ modelli di report AD disponibili. Personalizza facilmente i tuoi report AD.




GMPC

Possiamo visualizzare la versione del GPO (per AD e SYSVOL) e il suo stato nel GPMC.

Inoltre, il computer del client continuerà comunque a elaborare una policy anche quando VersionDirectory e VersionSysvol hanno un valore di 0, mentre Enabled è true. Il sistema informerà il motore di elaborazione che non è necessario implementare la parte rilevante del GPO. Cambiare la configurazione non influirà molto sulle prestazioni di un computer veloce su una rete relativamente breve. Tuttavia, può comunque risparmiare parecchi preziosi secondi di GPO, specialmente per macchine più vecchie su reti più lente.

Quindi, il motore di elaborazione sul computer del client non applicherà una policy con VersionDirectory e VersionSysvol superiori a 0 ma con Enabled impostato su false. Potremmo chiederci perché alcune impostazioni non si applicano. È quindi essenziale indagare se si tratti di un incidente o di un’intenzione.

Supponiamo di essere familiari con il funzionamento interno del GPO. In tal caso, potremmo utilizzare il comando Get-GPOReport. Pertanto, questo serve per controllare direttamente queste impostazioni facendo riferimento a una proprietà anziché navigare nel GPMC.

In alternativa, potremmo voler concentrarci su alcune impostazioni in un GPO. Oppure alla fine potremmo voler allegare un GPO a un’OU utilizzando PowerShell, in modo da non dover creare un report.

  1. Rimuovi il parametro Path in quella situazione. Prendi nota del cast [xml] e dell’assenza di un parametro Path nell’esempio sottostante.
[xml]$GpoXml = Get-GPOReport -Name 'Sample GPO' -ReportType Xml

2. Ora che abbiamo convertito l’output di Get-GPOReport in un oggetto XML, possiamo facilmente fare riferimento alle sue numerose proprietà usando una breve notazione a punto.

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

3. Aggiungi un ciclo foreach e utilizza l’argomento All per scorrere ogni output di GPO.

$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

Analisi dei report XML di GPO

Possiamo apprendere molti aspetti delle tue GPO utilizzando l’output XML prodotto da Get-GPOReport. Nell’esempio precedente, se osserviamo le proprietà $GPOXML.GPO.Computer e $GPOXML.GPO.User del modello precedente, vedremo una proprietà ExtensionData come mostrato di seguito.

Come mostrato di seguito, possiamo iniziare a creare i tuoi report basandoci sui dati XML accedendo a questi nodi XML in PowerShell.

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

$PolicyDetails

Grazie per aver letto il nostro articolo sul blog su come creare report di Active Directory Policy con PowerShell. Concludiamo.

Crea rapporti sulla policy di gruppo di Active Directory con PowerShell Conclusion

Oltre alla console di gestione delle policy di gruppo (GPMC), questo articolo ha discusso modi per generare rapporti completi sulle Policy di Gruppo esportandoli in formato HTML e XML. Abbiamo anche discusso del Get-GpoReport cmdlet. Questo cmdlet può ora recuperare le stesse informazioni della GPMC tramite PowerShell. Ciò ci consente di interrogare molte GPO contemporaneamente, il che sicuramente aiuterà a creare ottimi rapporti.

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