hay varios escenarios como parte de la administración de anuncios en los que necesitamos recuperar la información de la directiva de grupo para los equipos administrados. Generalmente hay dos métodos para obtener la información.
Método 1:
el método más común es usar gpresult.comando exe que se detalla en este artículo de technet. Esto solo funciona bien si el usuario que ejecuta el comando ha iniciado sesión al menos una vez en el equipo de destino. De lo contrario se lanza por debajo de error.,
el Usuario no tiene datos RSOP
Método 2:
El Método 2 es usar el comando Get-GPResultantSetOfPolicy PowerShell-let que se detalla aquí. Este comando también funciona de manera similar al método 1 y requiere que el usuario inicie sesión al menos una vez.
Usando el método 1 y el método 2, incluso si queremos que la información de la directiva de grupo solo sea para el equipo, independientemente del Usuario, no es posible sin que el Usuario haya iniciado sesión al menos una vez, ya que el comando recupera el conjunto resultante de Directivas que se aplican para el usuario especificado en el equipo de destino.,
solución:
para superar estos problemas, utilice el objeto COM de administración de directivas de grupo que es la base de gpresult.exe y Get-ResultantSetOfPolicy PS comando-let sirve mejor. Podemos usar el objeto COM en scripting VB o PS. Aquí vamos a discutir sobre su uso en PS Scripting.
#Inicializar Variables
$OutputFile = «C:TempGPOExport.html»
$ComputerName = «prueba.contoso.,com»
$Usuario = «juan»
La primera cosa que hacemos es crear una instancia de la GPMgmt.Objeto GPM. Podemos usar este objeto si la consola de administración de directivas de grupo está instalada en el equipo.
g gpm = New-Object-ComObject GPMgmt.GPM
el Siguiente paso es obtener todas las constantes y guardarlo en una variable.
$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 UserName
Nota: Si necesitamos los datos RSOP solo para el equipo sin considerar los datos de la directiva de grupo impuesta por el Usuario, necesitamos usar el valor constante «RsopLoggingNoUser» en lugar de GP gpmRSOP.LoggingUser.
$gpmRSOP.LoggingFlags = $Constantes.Rsoploggingnouser
el siguiente paso es consultar el equipo de destino para obtener datos de GPO RSOP.
$gpmRSOP.CreateQueryResults ()
para exportar datos a un archivo de salida se utiliza el comando debajo.,
HTML:
$gpmRSOP.GenerateReportToFile($constantes.ReportHTML,$outputfile)
XML:
$gpmRSOP.GenerateReportToFile($constantes.ReportXML,outp outputfile)
Usando así GPMgmt.Objeto GPM COM, podemos obtener el conjunto resultante de políticas de grupo para el equipo de destino con o sin considerar al usuario y también sin necesidad de registro de usuario al menos una vez.