Cómo crear informes de directivas de grupo de Active Directory con PowerShell (GPO)

Crear informes de Políticas de Active Directory con PowerShell. Con la ayuda del cmdlet Get-GpoReport, podemos generar informes sobre Políticas de Grupo (GPO), que van desde informes básicos basados en texto hasta informes completamente desarrollados en Hypertext Markup Language (HTML). Además, podemos automatizar este proceso de generación de informes con PowerShell. Esto es para ahorrar tiempo y obtener información importante sobre su sistema Active Directory (AD). En este artículo, repasaremos cómo importar el módulo PowerShell GPO, exportar GPO y vincular GPO a una Unidad Organizativa (OU). Esto servirá de ejemplo para que todos trabajen juntos para producir algunos informes de primera clase informes.

¿Comenzamos con cómo crear informes de políticas de Active Directory con PowerShell?

Crear informes de Directiva de Grupo de AD (GPO) con PowerShell

Requisitos previos

En este artículo, repasaremos algunas situaciones diversas que implican crear y modificar GPO existentes. Asegúrate de tener lo siguiente en su lugar si deseas seguir los ejemplos:

  • El módulo de PowerShell para Directiva de Grupo. Si estás usando Windows 10, puedes encontrarlo descargando e instalando RSAT, o si estás usando Windows Server, puedes usar el siguiente comando de PowerShell:
Install-WindowsFeature -Name GPMC
  • A computer member of the same AD domain from which we will query GPOs.
  • Un equipo unido al dominio con una cuenta de usuario de dominio con derechos para leer GPO.

Generando informes HTML con Get-GpoReport

En primer lugar, imaginemos que tenemos una sola GPO. Entonces, deseas ver la configuración de la misma (así como generar un informe HTML) para comenzar. Afortunadamente, Get-GpoReport puede descubrir una GPO en ambos casos y utilizar PowerShell para exportarlas. Para hacerlo, necesitaremos el nombre de la GPO o el Identificador Único Global (GUID) de la GPO.

Por lo tanto, necesitarás utilizar al menos tres parámetros para crear un informe HTML detallado:

  • Nombre o GUID para localizar la GPO.
  • Parámetro ReportType para especificar el tipo de informe a generar. Podemos elegir entre HTML o XML (Lenguaje de Marcado Extensible).
  • Ruta para especificar dónde queremos que se guarde el informe.

Tal vez tengamos una GPO en tu entorno. Por ejemplo, podemos especificar el ReportType con el valor HTML para un informe HTML y la ruta donde te gustaría guardar este archivo HTML si conocemos el nombre de la GPO, como en este ejemplo.

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

Alternativamente, podríamos utilizar el parámetro Guid para encontrar la GPO, pero esto es un paso adicional utilizando el siguiente ejemplo.

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

Podemos ver el informe en tu navegador preferido una vez que esté preparado.

Generación de informes HTML para todos los GPO

Alternativamente, para crear un informe de ámbito de dominio para los GPO. En ese caso, debemos utilizar el argumento All para consultar todos los GPO en el dominio. Sin embargo, en esta ocasión, en lugar de utilizar la opción Name o Guid para designar un GPO específico, estamos utilizando el parámetro de conmutación All para encontrarlos todos.

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

Cuando se utiliza en un entorno de AD, el cmdlet Get-GPOReport contacta con un controlador de dominio (DC) especificado por el parámetro Server para leer los GPO. Después, el DC con el rol de Emulador de PDC será utilizado de forma predeterminada si no hay ningún servidor disponible.

A continuación, cómo crear Informes de Directiva de Directivas de Directorio Activo con PowerShell es generar Informes XML.

Generando informes XML con Get-GpoReport

En general, una vez que importamos el módulo GPO en PowerShell, hay otras cosas que Get-GPOReport puede hacer. Eso significa que, además de exportar GPOs y producir informes HTML. Además, también podemos producir informes XML. Por ejemplo, necesitaríamos modificar el valor del parámetro ReportType de HTML a XML si quisiéramos crear un informe XML para una GPO específica.

Por ejemplo, a continuación consultamos una GPO existente, Informe de muestra, para producir un informe XML. Luego, abrimos ese informe usando el comando Invoke-Item en la aplicación predeterminada de archivos XML:

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

Cuando esté completo, veremos el archivo XML como se muestra en la captura de pantalla a continuación.

Primero, notamos que el nodo GPO XML contiene todo. Dentro de él, podemos encontrar cosas como Identificador (el GUID del GPO), Nombre (El nombre del GPO), Incluir Comentarios, Descriptor de Seguridad, SDDL y mucha más información.

Informe GPO XML

Además del formato, ¿qué diferencia este informe XML de HTML? Básicamente, los atributos que se ven en el informe HTML también están presentes en el informe XML. Pero están más estructurados y fáciles de analizar.

  • VersiónDirectorio Versión del GPO almacenada en la base de datos de AD.
  • VersionSysvol – Versión de la GPO almacenada en SYSVOL.
  • Habilitado – Si está deshabilitado, el motor de procesamiento de GPO en el equipo cliente no aplicará la configuración en la parte correspondiente de la directiva.

Es importante destacar que la versión de la directiva (computadora o usuario) aumenta cuando modificamos una GPO. Por lo tanto, el motor de procesamiento de Directiva de grupo puede determinar cuándo aplicar nuevas configuraciones y cuándo ha cambiado una directiva. Además, este comportamiento nos permitirá ejecutar gpupdate.exe después de cambiar una GPO sin usar el interruptor /force.

Ver informes de directiva de grupo de Active Directory utilizando InfraSOS

Pruébanos gratis, acceso a todas las funciones. – Más de 200 plantillas de informes AD disponibles. Personaliza fácilmente tus propios informes de AD.




GMPC

Podemos ver la versión de la GPO (para AD y SYSVOL) y su estado en el GPMC.

Además, la computadora del cliente seguirá procesando una directiva incluso cuando VersionDirectory y VersionSysvol tengan un valor de 0, pero Enabled sea true. El sistema informará al motor de procesamiento que no necesitamos implementar la parte relevante de la GPO. Cambiar la configuración no afectará mucho el rendimiento de una computadora rápida en una red relativamente corta. Aun así, puede ahorrar muchos segundos valiosos de dichas GPO, especialmente en máquinas más antiguas en redes más lentas.

Por lo tanto, el motor de procesamiento en la máquina cliente no aplicará una directiva con VersionDirectory y VersionSysvol superiores a 0, pero Enabled configurado como false. Podríamos preguntarnos por qué algunas configuraciones no se aplican. Por lo tanto, es esencial investigar si esto es un accidente o a propósito.

Supongamos que estamos familiarizados con el funcionamiento interno de la GPO. En ese caso, podemos usar el comando Get-GPOReport. Por lo tanto, esto es para verificar estas configuraciones directamente haciendo referencia a una propiedad en lugar de navegar al GPMC.

Alternatively, podemos querer enfocarnos en algunas configuraciones en una GPO. O eventualmente queremos adjuntar una GPO a una OU usando PowerShell, para que no necesitemos crear un informe.

  1. Elimine el parámetro Path en esa situación. Tenga en cuenta la conversión a [xml] y la ausencia de un parámetro Path en el siguiente ejemplo.
[xml]$GpoXml = Get-GPOReport -Name 'Sample GPO' -ReportType Xml

2. Ahora que hemos convertido la salida de Get-GPOReport en un objeto XML, podemos hacer referencia rápidamente a sus muchas propiedades utilizando una breve notación de puntos.

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

3. Agregue un bucle foreach y use el argumento All para recorrer cada salida de 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

Análisis de informes XML de GPO

Podemos aprender sobre muchos aspectos de sus GPO utilizando la salida XML que produce Get-GPOReport. En el ejemplo anterior, si observamos las propiedades $GPOXML.GPO.Computer y $GPOXML.GPO.User del modelo anterior, veremos una propiedad ExtensionData como se muestra a continuación.

Como se muestra a continuación, podemos comenzar a crear sus informes basados en los datos XML accediendo a estos nodos XML en PowerShell.

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

$PolicyDetails

Gracias por leer nuestro blog sobre cómo crear informes de directivas de Active Directory con PowerShell. Concluyamos.

Crear informes de directivas de grupo de Active Directory con PowerShell – Conclusión

Además de la Consola de administración de directivas de grupo (GPMC) nativa, este artículo discutió formas de generar informes completos sobre las Directivas de grupo exportándolas en formatos HTML y XML. También discutimos el Get-GpoReport cmdlet. Este cmdlet ahora puede recuperar la misma información que la GPMC a través de PowerShell. Esto nos permite consultar muchas GPO simultáneamente, lo que seguramente ayudará a construir excelentes informes.

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