PowerShell: Retrieve Group Policy details for Remote Computer

There are multiple scenarios as a part of AD management where we need to retrieve Group Policy information for managed computers. Existem geralmente dois métodos para obter a informação.

Método 1:

o método mais comum é usar a gpresult.comando exe, que é detalhado neste artigo technet. Isto só funciona bem se o utilizador que executa o comando tiver feito login pelo menos uma vez no computador de destino. Caso contrário, ele joga abaixo erro.,

O Utilizador não tem dados RSOP

Método 2:

Método 2 é usar o comando Get-GPResultantSetOfPolicy PowerShell-let que é detalhado aqui. Este comando também funciona similar ao Método 1 e requer que o usuário faça login pelo menos uma vez.

Usando O Método 1 e o Método 2, Mesmo que queiramos a informação de política de grupo apenas para o computador independentemente do Usuário, não é possível sem o usuário logado pelo menos uma vez como o comando recupera o conjunto resultante de políticas que são aplicadas para o usuário especificado no computador de destino.,

solução:

para superar estas questões, usando o objeto COM de gestão de Políticas de grupo que é a base para a gpresult.exe e Get-Resultantset of Policy PS command-let serves better. Podemos usar o objeto COM no script VB ou PS. Aqui vamos discutir sobre usá-lo em PS Scripting.

#Inicializar Variáveis

$OutputFile = “C:TempGPOExport.html “

$ComputerName = “test.contoso.,com”

$UserName = “john”

A primeira coisa que temos de fazer é criar uma instância do GPMgmt.Objecto GPM. Podemos usar este objeto se o Console de gerenciamento de Política de grupo estiver instalado no computador.

$gpm = GPMgmt New-Object-ComObject.GPM

o próximo passo é obter todas as constantes e gravá-las numa variável.

$constantes = $gpm.,GetConstants()

Now create reference RSOP object using required constants.

$gpmRSOP = $GPM.GetRSOP($Constants.RSOPModeLogging,$null,0)

Next step is to specify Target Computer and User.

$gpmRSOP.LoggingComputer = $ComputerName

$gpmRSOP.,LoggingUser = $UserName

Nota: Se precisamos dos dados do RSOP apenas para o computador sem considerar dados de Política de grupo impostos pelo Utilizador, precisamos usar o valor constante de “RsopLoggingNoUser” em vez de $gpmRSOP.LoggingUser.

$gpmRSOP.LoggingFlags = $Constants.RsopLoggingNoUser

próximo passo é consultar o computador-alvo para os dados do RSOP GPO.

$gpmRSOP.CreateQueryResults ()

para exportar dados para um ficheiro de saída abaixo do comando é usado.,

HTML:

$gpmRSOP.GenerateReportToFile($constants.ReportHTML,$outputfile)

XML:

$gpmRSOP.GenerateReportToFile($constants.ReportXML,$outputfile)

assim usando GPMgmt.Objeto GPM COM, Podemos obter o conjunto resultante de Políticas de grupo para o computador alvo com ou sem considerar o Usuário e também sem necessidade de registro de usuário pelo menos uma vez.

Share

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *