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.