jueves, 14 de mayo de 2026

WINDOWS. GPO. Update-Install Adobe Acrobat


Propósito:

Nos ha llegado una alerta de seguridad de Acrobat, que requiere parchear urgentemente las versiones que estén expuestas.

El número de PCs de mi empresa es bastante elevado y no disponemos de un programa para distribuir software, con lo que me ha tocado preparar una GPO.

Para hacerla he completado lo siguiente:

  • Indica SI se actualizó o NO
  • Detecta versión antes y después
  • Te dice EXACTAMENTE qué ha fallado
  • Saca todo por pantalla en ejecución manual, no por GPO.
  • Log completo
  • Instalación silenciosa sin pedir credenciales )
  • Compatible con un EXE 

Pasos

La GPO arranca en el script de inicio del PC. Tarda unos minutos en hacer la actualización/instalación.


Si lo ejecutas a mano puedes seguir el proceso en pantalla:

Si dudas si esta funcionando cuando se aplica la GPO, abre el log que deja en cada máquina en el fichero C:\Windows\Temp\acrobat_fix.log

Aquí dejarémos la versión de Acrobat a instalar: \\NAS01\Adobe\AcroRdrDC2600121529_es_ES.exe

El Script:
$log = "C:\Windows\Temp\acrobat_fix.log"
$installer = "\\NAS01\Adobe\AcroRdrDC2600121529_es_ES.exe"

function Write-Log {
    param($text)
    $line = "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - $text"
    Write-Host $line
    Add-Content -Path $log -Value $line
}

Write-Log "==== INICIO SCRIPT ===="

# Obtener versiones existentes
$apps = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* ,
                         HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
        Where-Object { $_.DisplayName -match "Adobe.*(Acrobat|Reader)" }

if ($apps) {
    Write-Log "Adobe detectado → se elimina SIEMPRE"

    foreach ($app in $apps) {
        Write-Log "Desinstalando $($app.DisplayName)"

        if ($app.PSChildName) {
            Start-Process "msiexec.exe" -ArgumentList "/x $($app.PSChildName) /qn /norestart" -Wait
        }
    }
}
else {
    Write-Log "No había Adobe instalado"
}

# Espera para asegurar limpieza
Start-Sleep 5

# Instalación limpia
if (Test-Path $installer) {

    Write-Log "Instalando nueva versión (silent)..."

    $proc = Start-Process $installer -ArgumentList "/sAll /rs /rps /msi /qn /norestart" -Wait -PassThru

    Write-Log "Código salida instalación: $($proc.ExitCode)"

    if ($proc.ExitCode -eq 0) {
        Write-Log " INSTALACIÓN COMPLETA OK"
    }
    else {
        Write-Log " ERROR EN INSTALACIÓN"
    }

} else {
    Write-Log " Instalador no encontrado"
}

Write-Log "==== FIN SCRIPT ===="


by GoN | Published: May 2026 | Last Updated:

No hay comentarios: