Sometimes you need to force Adobe Reader update non-interactively on a fleet of PCs. Perhaps, a zero-day vulnerability has been discovered or the auto-updater was turned off at some point. There are tons of scripts on this subject on the Internet, but very few actually work.
The main reason is that most scripts work by enumerating files on the Adobe FTP site. They then attempt to infer and download the most recent version. However, Adobe stopped updating their FTP a long time ago in favor of a more modern CDN-based update site. Some scripts also try to screenscrape the latest download link using regular expressions from the Adobe Reader download page. This method is quite fragile, and may change as Adobe updates the download page.
A better solution would be to use Chocolatey or WinGet packages. However, if you don’t have access to these package managers, you can download and run the Adobe Reader installer manually. This can be done by parsing the JSON response of the download form. Hopefully, the JSON response is less likely to change than the download page itself.
# determining the latest version of Reader $session = New-Object Microsoft.PowerShell.Commands.WebRequestSession $session.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36" $result = Invoke-RestMethod -Uri https://rdc.adobe.io/reader/products?lang=mui&site=enterprise&os=Windows%2011&country=US&nativeOs=Windows%2010&api_key=dc-get-adobereader-cdn ` -WebSession $session ` -Headers @{ "Accept"="*/*" "Accept-Encoding"="gzip, deflate, br" "Accept-Language"="en-US,en;q=0.9" "Origin"=https://get.adobe.com "Referer"=https://get.adobe.com/ "Sec-Fetch-Dest"="empty" "Sec-Fetch-Mode"="cors" "Sec-Fetch-Site"="cross-site" "sec-ch-ua"="`" Not A;Brand`";v=`"99`", `"Chromium`";v=`"101`", `"Google Chrome`";v=`"101`"" "sec-ch-ua-mobile"="?0" "sec-ch-ua-platform"="`"Windows`"" "x-api-key"="dc-get-adobereader-cdn" } $version = $result.products.reader[0].version $version = $version.replace('.','') # downloading $URI = https://ardownload2.adobe.com/pub/adobe/acrobat/win/AcrobatDC/$Version/AcroRdrDCx64$($Version)_MUI.exe $OutFile = Join-Path $env:TEMP "AcroRdrDCx64$($version)_MUI.exe" Write-Host "Downloading version $version from $URI to $OutFile" Invoke-WebRequest -Uri $URI -OutFile $OutFile -Verbose # silent install Start-Process -FilePath $OutFile -ArgumentList "/sAll /rs /rps /msi /norestart /quiet EULA_ACCEPT=YES" -WorkingDirectory $env:TEMP -Wait -LoadUserProfile # cleanup Remove-Item $OutFile Write-Host "Normal completion"