Criar Relatórios de Política de Grupo do Active Directory com PowerShell (GPO)

Crie relatórios de Políticas do Active Directory com o PowerShell. Com a ajuda do cmdlet Get-GpoReport, podemos produzir relatórios sobre Políticas de Grupo (GPO), variando de simples relatórios baseados em texto a relatórios completos em Hypertext Markup Language (HTML). Além disso, podemos automatizar esse processo de geração de relatórios com PowerShell. Isso é para economizar tempo e obter informações importantes sobre seu sistema Active Directory (AD). Neste artigo, vamos abordar como importar o módulo PowerShell GPO, exportar GPOs e vincular GPOs a uma Unidade Organizacional (OU). Isso será como um exemplo, para que todos eles funcionem juntos para produzir alguns excelentes relatórios.

Vamos começar com como criar relatórios de políticas do Active Directory com o PowerShell.

Crie relatórios de Política de Grupo (GPO) com PowerShell

Pré-requisitos

Neste artigo, abordaremos algumas situações variadas que envolvem a criação e modificação de GPOs existentes. Certifique-se de ter o seguinte em vigor se desejar acompanhar os exemplos:

  • O módulo PowerShell para Política de Grupo. Se você estiver usando Windows 10, podemos encontrar isso baixando e instalando o RSAT, ou se você estiver usando o Windows Server, podemos usar o comando PowerShell abaixo:
Install-WindowsFeature -Name GPMC
  • A computer member of the same AD domain from which we will query GPOs.
  • Um computador AD-joined com uma conta de usuário de domínio com direitos para ler GPOs.

Gerando relatórios HTML com Get-GpoReport

Primeiro de tudo, vamos imaginar que temos uma única GPO. Portanto, você deseja visualizar as configurações dela (bem como gerar um relatório HTML) para começar. Felizmente, Get-GpoReport pode descobrir uma GPO em qualquer um dos dois e utilizar o PowerShell para exportá-las. Para fazer isso, precisaremos do nome da GPO ou do Identificador Único Global (GUID) da GPO.

Portanto, você precisará utilizar pelo menos três parâmetros para criar um relatório HTML detalhado:

  • Nome ou GUID para localizar a GPO.
  • Parâmetro ReportType para especificar o tipo de relatório a ser gerado. Podemos escolher entre HTML ou XML (Extensible Markup Language).
  • Caminho para especificar onde gostaríamos que o relatório fosse salvo.

Talvez tenhamos uma GPO em seu ambiente. Por exemplo, podemos especificar o ReportType com o valor HTML para um relatório HTML e o caminho onde você gostaria de salvar esse arquivo HTML se soubermos o nome da GPO, como fazemos neste exemplo.

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

Alternativamente, poderíamos usar o parâmetro Guid para encontrar a GPO, mas isso é um passo extra usando o exemplo abaixo.

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

Podemos visualizar o relatório no seu navegador preferido assim que estiver preparado.

Gerando Relatórios HTML Para Todos os GPOs

Alternativamente, para criar um relatório em toda a domínio para GPOs. Nessa situação, devemos usar o argumento All para consultar todos os GPOs no domínio. No entanto, desta vez, em vez de usar a opção Name ou Guid para designar um GPO específico, estamos usando o parâmetro de comutação All para encontrá-los todos.

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

Ao ser usado em um ambiente de AD, o cmdlet Get-GPOReport entra em contato com um controlador de domínio (DC) especificado pelo parâmetro Server para ler os GPOs. Depois disso, o DC com a função de Emulador de PDC será usado por padrão se nenhum servidor estiver disponível.

Em seguida, como Criar Relatórios de Política de Diretório Ativo com PowerShell é gerar Relatórios XML.

Gerando Relatórios XML com o Get-GpoReport

Geralmente, uma vez que importamos o módulo GPO no PowerShell, existem outras coisas que Get-GPOReport pode fazer. Isso significa que, além de exportar GPOs e produzir relatórios HTML. Além disso, também podemos produzir relatórios XML. Por exemplo, precisaríamos modificar o valor do parâmetro ReportType de HTML para XML se quisermos criar um relatório XML para uma GPO específica.

Por exemplo, abaixo consultamos uma GPO existente, Relatório de Amostra, para produzir um relatório XML. Em seguida, abrimos esse relatório usando o comando Invoke-Item no aplicativo padrão de arquivos XML:

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

Ao concluir, veremos o arquivo XML como na captura de tela abaixo.

Primeiramente, notamos que o nó XML do GPO contém tudo. Dentro dele, podemos encontrar coisas como Identificador (o GUID do GPO), Nome (O nome do GPO), Incluir Comentários, Descritor de Segurança, SDDL e muito mais informações.

Relatório GPO XML

Além do formato, o que diferencia este relatório XML do HTML? Basicamente, os atributos vistos no relatório HTML também estão presentes no relatório XML. Mas eles são mais estruturados e fáceis de analisar.

  • VersãoDirectory Versão do GPO armazenada na base de dados do AD.
  • VersionSysvol – Versão do GPO armazenada em SYSVOL.
  • Habilitado – Se desabilitado, o mecanismo de processamento do GPO no computador cliente não aplicará as configurações na parte correspondente da política.

Importante, a versão da política (computador ou usuário) aumenta quando modificamos um GPO. Portanto, o mecanismo de processamento de Política de Grupo pode então determinar quando aplicar novas configurações e quando uma política foi alterada. Além disso, esse comportamento nos permitirá executar gpupdate.exe após alterar um GPO sem usar a combinação /force.

Verifique relatórios de Política de Grupo do Active Directory usando o InfraSOS

Experimente-nos gratuitamente, acesso a todos os recursos. – 200+ modelos de relatórios do AD disponíveis. Personalize facilmente seus próprios relatórios do AD.




GMPC

Podemos visualizar a versão do GPO (para AD e SYSVOL) e seu estado no GPMC.

Além disso, o computador do cliente ainda processará uma política mesmo quando VersionDirectory e VersionSysvol têm um valor de 0, mas Enabled é true. O sistema informará ao mecanismo de processamento que não precisamos implementar a parte relevante do GPO. Alterar a configuração não afetará o desempenho de um computador rápido em uma rede relativamente curta. Mesmo assim, ainda pode economizar muitos segundos valiosos desses GPOs, especialmente para máquinas mais antigas em redes mais lentas.

Portanto, o mecanismo de processamento no computador do cliente não aplicará uma política com VersionDirectory e VersionSysvol maiores que 0 mas com Enabled definido como false. Podemos perguntar por que algumas configurações não se aplicam. Assim, é essencial investigar se isso foi um acidente ou intencional.

Suponha que estejamos familiarizados com o funcionamento interno do GPO. Nesse caso, podemos usar o comando Get-GPOReport. Portanto, isso é para verificar essas configurações diretamente fazendo referência a uma propriedade em vez de navegar até o GPMC.

Alternativamente, podemos querer focar em algumas configurações em um GPO. Ou eventualmente queremos anexar um GPO a uma OU usando o PowerShell, para que não precisemos criar um relatório.

  1. Remova o parâmetro Path nessa situação. Observe o cast [xml] e a ausência de um parâmetro Path no exemplo abaixo.
[xml]$GpoXml = Get-GPOReport -Name 'Sample GPO' -ReportType Xml

2. Agora que convertemos a saída do Get-GPOReport em um objeto XML, podemos facilmente acessar suas muitas propriedades usando uma notação de ponto breve.

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

3. Adicione um loop foreach e use o argumento All para percorrer cada saída do 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

Analisando Relatórios GPO em XML

Podemos aprender sobre muitos aspectos dos seus GPOs usando a saída XML que o Get-GPOReport produz. No exemplo anterior, se olharmos as propriedades $GPOXML.GPO.Computer e $GPOXML.GPO.User do modelo anterior, veremos uma propriedade ExtensionData conforme mostrado abaixo.

Conforme mostrado abaixo, podemos começar a criar seus relatórios com base nos dados XML acessando esses nós XML no PowerShell.

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

$PolicyDetails

Obrigado por ler nosso blog sobre como criar Relatórios de Política do Active Directory com PowerShell. Vamos concluir.

Criar Relatórios de Políticas de Grupo do Active Directory com o PowerShell Conclusão

Além do Console de Gerenciamento de Políticas de Grupo (GPMC) nativo, este artigo discutiu maneiras de gerar relatórios abrangentes sobre Políticas de Grupo exportando-os em formatos HTML e XML. Também discutimos o Get-GpoReport cmdlet. Esse cmdlet agora pode obter as mesmas informações que o GPMC por meio do PowerShell. Isso nos permite consultar várias GPOs simultaneamente, o que certamente ajudará a criar excelentes relatórios.

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