Microsoft Intune: Configurar Plantillas Corporativas para Office en Versiones No Enterprise
Es muy posible/probable que os soliciten la configuración de plantillas de Word, Excel o PowerPoint para vuestros usuarios, algo que sabéis que súper sencillo de configurar con GPO o Intune. Hasta aquí nada nuevo, el problema llega cuando vuestros usuarios tienen por ejemplo un plan de Microsoft 365 Business Premium y os dais cuenta que esa licencia que está muy bien para muchísimas empresa, no es ninguna de las que está soportada para aplicarle directivas grupo. Las que soportan la configuración mediante directivas de grupo con la siguientes versiones:
- Microsoft 365 Apps for enterprise
- Office LTSC 2021
- Office 2019
- Office 2016
La licencia de Business Premium tiene Microsoft 365 Apps for Business como versión de las aplicaciones de Office, la cual, no tiene soporte para configuración mediante directivas de grupo. Aquí os dejo un enlace donde podéis verlo con más nivel de detalle: Office applications service description. Para los que queráis un resumen rápido, la Business Premium solo permite aplicar directivas de grupo para de forma limitada para 11 Limited to policies for web apps and privacy policies for client apps y 12 Limited to policies for web apps.
Antes de comenzar con lo que nos interesa voy a comentaros que, si configuráis un perfil de configuración de Intune donde defináis las rutas (locales o de red) de vuestras plantillas de Office (Word, Excel, PowerPoint), las claves de registro correspondientes se actualizarán (HKEY_CURRENT_USER\Software\Policies\Microsoft\office\16.0\common\general\usertemplates, ) pero vuestro Office no les hará caso alguno sino es alguna de las versiones que os he comentado al principio.
Pues ahora sí, lo primero mostrarnos de forma gráfica el proceso que llevaremos a cabo mediante Intune y el despliegue de aplicaciones para realizar todo el proceso:
A continuación os muestro los objetivos que yo tenía para este proceso:
- Copiar las plantillas de Word a todos los usuarios de la organización, todos los equipos están unidos a AzureAD y no se tiene servidor de ficheros ni VPN
- La copia debe ser de forma segura, siempre autenticada y con tráfico TLS
- Comprobar que los usuarios tienen todas las plantillas de una forma que nos garantice que hemos copiado las plantillas
- Establecer las claves de registro necesarias para que sus versiones de Office tengan configuradas las rutas hacia las plantillas previamente copiadas
- Tener un directorio con todas las plantillas actualizadas sin que IT tenga intervenir de forma manual en cada ocasión que se tengan que actualizar las plantillas
- Comprobar que todos los usuarios que ya tenían las plantillas que tengan bien la clave de registro que configure el Word para establecer la ruta de las plantillas
Ahora punto por punto os explico como lo he solventado, pero además, esto podéis utilizarlo para otros procesos de copiado de ficheros, etc…:
- Utilizaré un script de PowerShell que se descargará el AzCopy para descargarse las plantillas que están en una cuenta de almacenamiento
- La conexión con la cuenta de almacenamiento será vía HTTPS, acceso autenticado mediante SASToken el cual está limitado en tiempo y acceso (lectura y listado)
- Otro script comparará los HASH de cada fichero descargado con los que hay en la cuenta de almacenamiento para asegurarse que se han copiado correctamente, además de si existe alguna nueva plantilla que la vuelva a descargar
- Con el primer script de PowerShell que descargaré las plantillas de Word de la cuenta de almacenamiento ya establecemos la clave de registro (HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\options\PersonalTemplates) que configura la ruta de las plantilla personales en Word.
- Con la cuenta de almacenamiento en Azure, se puede configurar un script (automatizado) para que alguien de marketing de la empresa pueda ir subiendo las plantillas (u otro método vamos)
- Se utilizarán scripts de remediación para que vaya revisando las claves de registro de los usuarios y sino están bien, con un script de corrección que lo vaya actualizando.
No puedo escribirlo todo, pero aquí os dejo como definir la seguridad de la container creado en la cuenta de almacenamiento de Azure y como obtener el SASToken que luego utilizaremos en el script:
Accedemos al container que hemos creado para las plantillas de Word (wordtemplates) y pulsamos sobre Change access level y lo establecemos como os muestro (Private (no anonumous)):
Luego, para obtener el SAS Token pulsamos en Shared access tokens y en permisos elegimos Rea y List, definimos la fecha máxima de vigencia y pulsamos en Generate SAS Token and Url y copiamos el texto de la línea Blob SAS token:
Ahora aquí os dejo los scripts que he creado:
- Intune-Word-Add.ps1: script que descargará las plantillas y configurará las claves de registro
- Intune-Word-Del.ps1: script para borrar las plantillas (también podríamos incluir que borrase las claves de registro que configura el Word)
- Intune-Word-DR.ps1: script utilizando como método de detección para que Intune tenga constancia de que la aplicación se ha instalado correctamente. En este caso lo vamos a utilizar para comprobar que tenemos las plantillas descargadas y mediante su HASH verificar que se han copiado correctamente.
Como os había comentado al principio, utilizaré AzCopy (+ info sobre AzCopy aquí: Introducción a AzCopy) para conectarse de forma segura a la cuenta de almacenamiento y descargarme las plantillas, pero los equipos no tienen AzCopy instalado o más bien descargado el .exe que es lo único que necesitamos. Para no tener que llevarlo en dentro del .intunewim se descargará desde Internet en el directorio temporal del perfil del usuario ($env:LOCALAPPDATA\Temp) y luego se borrará para no dejarlo ahí (Get-ChildItem -path $TempFolder -Recurse -Filter ‘azco*’ | Remove-Item -Force -Recurse):
Nota: en la ruta del SAS Token debéis cambiar /wordtemplates/?sp por /wordtemplates/*?sp, para que con el comando AzCopy copy solo copie los elementos que están dentro del container.
Una vez que se ha descargado las plantillas, ahora se ejecutará el script Intune-Word-DR.ps1 para verificar que todo se ha copiado correctamente, como os he comentado, una salida Exit 0 del script será lo que le indicará a Intune que la aplicación está bien instalada. Personalmente me ha gustado esta forma de comprobar que los ficheros son los que tienen que ser, porque sino .. habia pensado en contarlos, en ver su tamaño, etc .. pero es muy estático y siempre me obligaría a modificar el script y por ello crear cada vez que haya modificaciones en las plantillas (en las existentes o nuevas) un paquete .intunewin y volver a subirlo, no tenía sentido.
El proceso es parecido al de instalación, volvemos a descargarnos las plantillas para luego comparar los HASH de cada uno de los ficheros (sean 1 o 100) y si hay diferencias entonces se tiene que reintentar la instalación de las plantillas. Siempre estoy comentando instalar pero porque estamos utilizando un paquete intunewin para desplegarlo como una aplicación desde Intune, pero vamos, que es copiar ficheros :-).
Por último, el script Intune-Word-Del.ps1 que borrará las plantillas locales de cada usuario:
- Intune-Templates-Check.ps1: comprueba que existe la clave del registro configurada como queremos
- Intune-Templates-Remediation.ps1: establece las claves que configuran el Word:
Aquí el Intune-Templates-Check.ps1: solo compruebo que esté la clave, porque ya con lo anterior ya tengo las plantillas descargadas, pero esto es para usuario que ya tienen las plantillas pero no las claves de registro configuradas: