Microsoft Intune: Instalación de Adobe Acrobat
Voy a iniciar una serie de artículos súper sencillos de como desplegar ciertas aplicaciones con las que me voy encontrando en el día a día, ni más ni menos complejas que otras. Creo que es bueno que todos podamos publicar nuestras experiencias y nuestros scripts (los míos súper simples), pero creo que pueden ser de ayuda para quienes os estéis iniciando en Intune o/o PowerShell.
La idea de estos artículos es la de comentar mis experiencias con el despliegue de las diferentes aplicaciones, utilizando varios scripts:
- Intune-NombreApp-CheckVersion.ps1: script opcional que utilizo si quiero comprobar si existe algo en el
- Intune-NombreApp-Inst.ps1: script que utilizo para desplegar la aplicación en cuestión, además de desinstalar versiones que no quiero mantener
- Intune-NombreApp-DR.ps1: script para comprobar que la instalación se ha completado correctamente
Muchas aplicaciones se pueden desplegar con el propio MSI o .Intunewim con algún parámetro que le pasemos en el comando de instalación, pero en ocasiones me encuentro con que Intune no me informa correctamente de que el producto se instala correctamente y eso es un lío. Así que me he decido por “crear” estos tres scripts súper sencillos con los que estoy desplegando casi todo el software desde Intune.
Aquí os dejo la infografía que voy a utilizar para todos artículos como este:
En esta ocasión voy a mostraros como podemos desplegar Acrobat Reader, comprobando previamente si existe una versión previa instalada y si es así, primero desinstalamos y luego instalamos la nueva versión que queremos desplegar. Estos son los pasos a seguir:
- Crear los tres scripts para revisar, instalar y verificar el proceso
- Crear un .intunewim con el .exe que vayamos a instalar, en este caso una versión de Acrobat Reader
- Crear la aplicación en Intune
Comentado el proceso, vamos a ver lo scripts uno por uno:
Intune-NombreApp-CheckVersion.ps1: busco si existe alguna versión de Adobe Acrobat, compruebo su versión y si es menor que la versión que quiero instalar y si es así, lo sacamos vía Write-Output texto que utilizamos en Intune para indicarle que el equipo cumple requisitos para ser instalada la aplicación en cuestión.
$AdobeVersion = (get-wmiobject Win32_Product | Where Name -like “*Adobe Acrobat*”).version
if ($AdobeVersion -lt “22.003.20282”) {
Write-Output “To be updated”
Exit 0
}
else{
Write-Host “You already have the software installed”
}
Intune-NombreApp-Inst.ps1: nuevamente buscamos las versiones de Acrobar Reader que tiene instaladas ($productKey = get-wmiobject Win32_Product | Where Name -like “*Adobe Acrobat*”), como con el script anterior sabemos que es una versión anterior a la que vamos a instalar, simplemente la desinstalamos (Foreach ($IdentifyingNumberKey in $productKey) {Start-Process Msiexec.exe -Argument “/X $($IdentifyingNumberKey.IdentifyingNumber) /qn” -Wait}) y a continuación instalamos la versión que previamente hemos empaquetado en un .intunewim (Start-Process AcroRdrDC2200320282_en_US.exe -ArgumentList “/sAll /rs /rps /quiet /msi /norestart EULA_ACCEPT=YES” -Wait):
# Restart Process using PowerShell 64-bit
If ($ENV:PROCESSOR_ARCHITEW6432 -eq “AMD64″) {
Try {
&”$ENV:WINDIR\SysNative\WindowsPowershell\v1.0\PowerShell.exe” -File $PSCOMMANDPATH
}
Catch {
Throw “Failed to start $PSCOMMANDPATH”
}
Exit
}
$productKey = get-wmiobject Win32_Product | Where Name -like “*Adobe Acrobat*”
Get-Process -Name *Acro* | Stop-Process -Force
Foreach ($IdentifyingNumberKey in $productKey) {Start-Process Msiexec.exe -Argument “/X $($IdentifyingNumberKey.IdentifyingNumber) /qn” -Wait}
Start-Process AcroRdrDC2200320282_en_US.exe -ArgumentList “/sAll /rs /rps /quiet /msi /norestart EULA_ACCEPT=YES” -Wait
Intune-NombreApp-DR.ps1: compruebo la versión de Acrobat Reader instalada buscando la versión en el ejecutable instalado ($AdobeVersion = (get-wmiobject Win32_Product | Where Name -like “*Adobe Acrobat*”).version), si es la que hemos instalado entonces salimos con un Exit 0 y le indicamos a Intune que se ha instalado correctamente. En caso contrario, que lo reintente indicado con un Exit 1618:
$AdobeVersion = (get-wmiobject Win32_Product | Where Name -like “*Adobe Acrobat*”).version
if ($AdobeVersion -eq “22.003.20282”) {
Write-Host “You already have the software installed”
Exit 0
}
else{
Write-Host “Installation must be retry”
Exit 1618
}
Como comentario, dentro de cada .intunewin yo introduzco todo:
- Logo que voy a utilizar para identificar el software el portal de empresa
- Los tres scripts que he comentado
- Software a instalar
Os preguntaréis para que quiero llevar todo en el empaquetado, pues por si en algún momento “pierdo” los scripts lo puedo recuperar extrayendo el contenido del .intunewin. Aquí os dejo un enlace de como podéis extraer el contenido del paquete .intunewin: Intune Win32app tool – Create and Extract Intunewin | Syst & Deploy (systanddeploy.com).
Por último, aquí os dejo las capturas de pantalla de la configuración ya en Intune de la instalación de Acrobat. Lo primero subir el .intunewim, poner un nombre al paquete a subir, la versión, si lo queremos publicar o no en el portal de empresa y su icono:
Ahora escribimos los comandos de instalación y desinstalación:
- Instalación: siempre que sea una script de Powershell recomendado: PowerShell -ExecutionPolicy Bypass -File nombre-script
- Desinstalación: si el propio producto lo tiene, escribirlo, en este caso Acrobat lo hará con un MSI y su clave de registro: MsiExec /x “{ID}” /qn (+info Windows cmd line and msiexec — Legacy Administration Guide (adobe.com))
Aquí ya tenemos los códigos de retorno de la instalación y scripts personalizados por nuestra parte.
Otra parte importante donde es clave uno de nuestros scripts: Intune-NombreApp-CheckVersion.ps1. Con esto podemos comprobar previamente los requisitos para instalar nuestra aplicación, pues así lo tenéis que configurar si utilizáis mi script con la salida Write-Output. En vuestro script podéis poner el texto de salida que queráis, luego aquí lo tendréis que referenciar:
Y por último, el script de verificación de la instalación (Intune-NombreApp-DR.ps1), comprobará vía ejecutable del producto si es la versión correcta del producto o no.
Por último, quedaría asignarla a los equipos o equipos que queráis con un grupo de AzureAD: Grp Az Cmp TrustType AzureAD. Esto en mi caso significa lo siguiente:
- Grp: indicamos que es un grupo para “agrupar” objetos, si fuese para aplicar permisos empezaría por Acl (Access Control List), lo comento para que no parece absurdo llamarle Grp :-).
- Az: indico que es un grupo creado en Azure
- TrusType: como está unido a AzureAD el equipo (ahora se puede hacer con grupos dinámicos)
- AzureAD: equipo unido a AzureAD
Antes de ponerlo en producción utilizar equipos de pruebas, de ahí el grupo Grp Az PoC EndPoints“
Ahora solo queda esperar a que se vaya desplegando y como veis 100% de efectividad:
Luego lo he desplegado al resto de equipos (casi 300) y solo he tenido 8 errores, los cuales habría que revisar para ver que ha ocurrido, pero me resulta más efectivo que otros métodos.
Con estos tres scripts modificando las líneas de código correspondiente estoy realizando casi todas las instalaciones, controlo mejor lo que quiero desinstalar e instalar y verificar que todo está correcto. Al principio utilizaba las opciones de Intune para comprobar versiones (ficheros, MSI, Registro), pero .. me va mejor utilizando estos scripts sencillitos.
La versión de Acrobat Reader la descargo siempre de aquí: Adobe Acrobat Reader, pero para otros casos siempre o casi siempre existe la versión offline para descargarla (lo iré comentando artículo a artículo).
Como os había comentado, iré publicando la instalación de más aplicaciones con estos scripts con las modificaciones que sean necesarias para cada caso.