Uso de scripts de shell en dispositivos macOS en Intune
Use scripts de shell para ampliar las funcionalidades de administración de dispositivos en Intune, más allá de lo que admite el sistema operativo macOS.
Nota:
Se requiere Rosetta 2 para ejecutar la versión x64 (Intel) de las aplicaciones en equipos Mac con Apple Silicon. Para instalar Rosetta 2 en Apple Silicon Macs automáticamente, puede implementar un script de shell en Intune. Para ver un script de ejemplo, consulte Script de instalación de Rosetta 2.
Requisitos previos
Asegúrese de que se cumplen los siguientes requisitos previos al redactar scripts de shell y asignarlos a dispositivos macOS.
- Los dispositivos ejecutan macOS 12.0 o posterior.
- Intune administra los dispositivos.
- Los dispositivos están conectados directamente a Internet. No se admite la conexión a través de un proxy.
- Los scripts de shell comienzan por
#!
y deben estar en una ubicación válida como#!/bin/sh
o#!/usr/bin/env zsh
. - Se instalan intérpretes de línea de comandos para los shells aplicables.
Consideraciones importantes antes de usar scripts de shell
- Los scripts de Shell requieren que el agente de administración de Microsoft Intune se instale correctamente en el dispositivo macOS. Para obtener más información, vea Agente de administración de Microsoft Intune para macOS.
- Los scripts de shell se ejecutan en paralelo en dispositivos como procesos independientes.
- Los scripts de Shell que se ejecutan como el usuario que inició sesión se ejecutarán para todas las cuentas de usuario que hayan iniciado sesión actualmente en el dispositivo en el momento de la ejecución.
- Es necesario que un usuario final inicie sesión en el dispositivo para ejecutar scripts que se ejecutan como usuario que ha iniciado sesión.
- Los privilegios de usuario raíz son necesarios si el script requiere realizar cambios que una cuenta de usuario estándar no puede.
- Los scripts de Shell intentarán ejecutarse con más frecuencia que la frecuencia de script elegida para determinadas condiciones, como si el disco está lleno, si la ubicación de almacenamiento está alterada, si se elimina la caché local o si se reinicia el dispositivo Mac.
- Los scripts de Shell que se ejecutan durante más de 60 minutos se detienen y se notifican como "con errores".
Creación y asignación de una directiva de script de shell
Inicie sesión en el Centro de administración de Microsoft Intune.
Seleccione Dispositivos>por plataforma>macOS>Administrar dispositivos>Scripts>Agregar.
En Datos básicos, escriba las siguientes propiedades y seleccione Siguiente:
- Nombre: escriba un nombre para el script de shell.
- Descripción: escriba una descripción para el script de shell. Esta configuración es opcional pero recomendada.
En Configuración de script, escriba las siguientes propiedades y seleccione Siguiente:
- Cargar script: vaya al script de shell. El archivo de script debe tener un tamaño inferior a 200 KB.
- Ejecutar script como usuario que ha iniciado sesión: seleccione Sí para ejecutar el script con las credenciales del usuario en el dispositivo. Elija No (valor predeterminado) para ejecutar el script como usuario raíz.
- Ocultar notificaciones de script en dispositivos: De forma predeterminada, se muestran las notificaciones de script para cada script que se ejecuta. Los usuarios finales ven que un equipo de TI configura la notificación del equipo desde Intune en dispositivos macOS.
- Frecuencia de script: Seleccione la frecuencia con la que se va a ejecutar el script. Elija No configurado (valor predeterminado) para ejecutar un script solo una vez. Los scripts con un conjunto de frecuencia también se ejecutarán después de reiniciar el dispositivo.
- Número máximo de veces que reintentar si se produce un error en el script: Seleccione cuántas veces se debe ejecutar el script si devuelve un código de salida distinto de cero (cero, lo que significa que se ha realizado correctamente). Elija No configurado (valor predeterminado) para no volver a intentarlo cuando se produzca un error en un script.
En Etiquetas de ámbito, agregue opcionalmente etiquetas de ámbito para el script y seleccione Siguiente. Puede usar etiquetas de ámbito para determinar quién puede ver scripts en Intune. Para obtener información completa sobre las etiquetas de ámbito, consulte Uso de etiquetas de ámbito y control de acceso basadas en rol para TI distribuida.
Seleccione Asignaciones>Seleccionar grupos para incluir. Se muestra una lista existente de grupos de Microsoft Entra. Seleccione uno o varios grupos de usuarios o dispositivos que van a recibir el script. Elija Seleccionar. Los grupos que elija se muestran en la lista y recibirán la directiva de script.
Nota:
- Los scripts de Shell asignados a grupos de usuarios se aplican a cualquier usuario que inicie sesión en el Equipo Mac.
- La actualización de asignaciones para scripts de shell también actualiza las asignaciones del Agente MDM de Microsoft Intune para macOS.
En Revisar y agregar, se muestra un resumen de la configuración. Seleccione Agregar para guardar el script. Al seleccionar Agregar, la directiva de script se implementa en los grupos elegidos.
El script que ha creado ahora aparece en la lista de scripts. Si es necesario, puede ver el contenido de los scripts de shell de macOS después de cargarlos en Intune.
Supervisión de una directiva de script de shell
Para supervisar el estado de ejecución de todos los scripts asignados para usuarios y dispositivos, elija uno de los informes siguientes:
- Scripts>seleccionar el script que se va a supervisar>Estado del dispositivo
- Scripts>seleccionar el script que se va a supervisar>Estado del usuario
Importante
Independientemente de la frecuencia de script seleccionada, el estado de ejecución del script solo se notifica la primera vez que se ejecuta un script. El estado de ejecución del script no se actualiza en ejecuciones posteriores. Sin embargo, los scripts actualizados se tratan como nuevos scripts y notificarán de nuevo el estado de ejecución.
Una vez que se ejecuta un script, devuelve uno de los siguientes estados:
- Un estado de ejecución de script con error indica que el script devolvió un código de salida distinto de cero o que el script tiene un formato incorrecto.
- Un estado de ejecución de script correcto indicaba que el script devolvía cero como código de salida.
Solución de problemas de directivas de script de shell de macOS mediante la recopilación de registros
Puede recopilar registros de dispositivos para ayudar a solucionar problemas de scripts en dispositivos macOS.
Requisitos para la recopilación de registros
Los siguientes elementos son necesarios para recopilar registros en un dispositivo macOS:
- Debe especificar la ruta de acceso completa del archivo de registro absoluto.
- Las rutas de acceso de archivo deben separarse utilizando solo un punto y coma (;).
- El tamaño máximo de recopilación de registros que se va a cargar es de 60 MB (comprimidos) o 25 archivos, lo que ocurra primero.
- Los tipos de archivo que se permiten para la recopilación de registros incluyen las siguientes extensiones: .log, .zip, .gz, .tar, .txt, .xml, .crash, .rtf
Recopilación de registros de dispositivos
Inicie sesión en el Centro de administración de Microsoft Intune.
Vaya a Dispositivos>Administrar dispositivos>Scripts y correcciones>Scripts de la plataforma y seleccione un script de shell de macOS.
En Estado del dispositivo o Informe de estado de usuario, seleccione un dispositivo.
Seleccione Recopilar registros, proporcione rutas de acceso de carpeta de archivos de registro separados solo por un punto y coma (;) sin espacios ni líneas nuevas entre rutas de acceso.
Por ejemplo, varias rutas de acceso deben escribirse como/Path/to/logfile1.zip;/Path/to/logfile2.log
.Importante
Varias rutas de acceso de archivo de registro separadas mediante comas, puntos, líneas nuevas o comillas con o sin espacios producirán un error de recopilación de registros. Tampoco se permiten espacios como separadores entre rutas de acceso.
Seleccione Aceptar. Los registros se recopilan la próxima vez que el agente de administración de Intune en el dispositivo comprueba con Intune. Este registro suele producirse cada 8 horas.
Nota:
- Los registros recopilados se cifran en el dispositivo, se transmiten y almacenan en Microsoft Azure Storage durante 30 días. Los registros almacenados se descifran a petición y se descargan mediante el Centro de administración de Microsoft Intune.
- Además de los registros especificados por el administrador, los registros del agente de administración de Intune también se recopilan de estas carpetas:
/Library/Logs/Microsoft/Intune
y~/Library/Logs/Microsoft/Intune
. Los nombres de archivo de registro del agente sonIntuneMDMDaemon date--time.log
yIntuneMDMAgent date--time.log
. - Si falta algún archivo especificado por el administrador o tiene la extensión de archivo incorrecta, encontrará estos nombres de archivo enumerados en
LogCollectionInfo.txt
.
Errores de recopilación de registros
Es posible que la recopilación de registros no se realice correctamente debido a cualquiera de los siguientes motivos que se proporcionan en la tabla siguiente. Para resolver estos errores, siga los pasos de corrección.
Código de error (hexadecimal) | Código de error (dec) | Mensaje de error | Pasos de corrección |
---|---|---|---|
0X87D300D1 | 2016214834 | El tamaño del archivo de registro no puede superar los 60 MB. | Asegúrese de que los registros comprimidos tengan un tamaño inferior a 60 MB. |
0X87D300D1 | 2016214831 | La ruta de acceso del archivo de registro proporcionada debe existir. La carpeta de usuario del sistema es una ubicación no válida para los archivos de registro. | Asegúrese de que la ruta de acceso del archivo proporcionada es válida y accesible. |
0X87D300D2 | 2016214830 | No se pudo cargar el archivo de recopilación de registros debido a la expiración de la dirección URL de carga. | Vuelva a intentar la acción Recopilar registros . |
0X87D300D3, 0X87D300D5, 0X87D300D7 | 2016214829, 2016214827, 2016214825 | No se pudo cargar el archivo de recopilación de registros debido a un error de cifrado. Vuelva a intentar la carga del registro. | Vuelva a intentar la acción Recopilar registros . |
2016214828 | El número de archivos de registro superó el límite permitido de 25 archivos. | Solo se pueden recopilar hasta 25 archivos de registro a la vez. | |
0X87D300D6 | 2016214826 | No se pudo cargar el archivo de recopilación de registros debido a un error zip. Vuelva a intentar la carga del registro. | Vuelva a intentar la acción Recopilar registros . |
2016214740 | Los registros no se pudieron cifrar porque no se encontraron registros comprimidos. | Vuelva a intentar la acción Recopilar registros . | |
2016214739 | Los registros se recopilaron, pero no se pudieron almacenar. | Vuelva a intentar la acción Recopilar registros . |
Atributos personalizados para macOS
Puede crear perfiles de atributo personalizados que le permitan recopilar propiedades personalizadas del dispositivo macOS administrado mediante scripts de shell.
Creación y asignación de un atributo personalizado para dispositivos macOS
Inicie sesión en el Centro de administración de Microsoft Intune.
Seleccione Dispositivos>por plataforma>macOS>Organizar dispositivos>Atributos personalizados para macOS>Add.
En Datos básicos, escriba las siguientes propiedades y seleccione Siguiente:
- Nombre: escriba un nombre para el script.
- Descripción: escriba una descripción para el script. Esta configuración es opcional pero recomendada.
En Configuración de atributos, escriba las propiedades siguientes y seleccione Siguiente:
- Tipo de datos del atributo: seleccione el tipo de datos del resultado que devuelve el script. Los valores disponibles son String, Integer y Date.
- Script: seleccione un archivo de script.
Detalles adicionales:
- El script de shell debe hacer eco del atributo que se va a notificar y el tipo de datos de la salida debe coincidir con el tipo de datos del atributo en el perfil de atributo personalizado.
- El resultado devuelto por el script de shell debe ser de 20 KB o menos.
Nota:
Al usar
Date
atributos de tipo, asegúrese de que el script de shell devuelve fechas en formato ISO-8601. Consulte los ejemplos a continuación.Para imprimir una fecha compatible con ISO-8601 con zona horaria:
#!/bin/sh var=$(date +"%Y-%m-%dT%H:%M:%S%z") echo $var # Prints an ISO-8601 compliant date with time-zone
Para imprimir una fecha compatible con ISO-8601 en hora UTC:
#!/bin/sh var=$(date -u +"%Y-%m-%dT%H:%M:%SZ") echo $var # Prints an ISO-8601 compliant date in UTC time
En Asignaciones, haga clic en Seleccionar grupos para incluir. Al elegir Seleccionar grupos para incluir una lista existente de grupos de Microsoft Entra, se muestra. Seleccione uno o varios grupos de usuarios o dispositivos que van a recibir el script. Elija Seleccionar. Los grupos que elija se muestran en la lista y recibirán la directiva de script. Como alternativa, puede elegir seleccionar Todos los usuarios, Todos los dispositivos o Todos los usuarios y todos los dispositivos seleccionando una de estas opciones en el cuadro desplegable situado junto a Asignar a.
Nota:
- Los scripts asignados a grupos de usuarios se aplican a cualquier usuario que inicie sesión en el Equipo Mac.
En Revisar y agregar, se muestra un resumen de la configuración. Seleccione Agregar para guardar el script. Al seleccionar Agregar, la directiva de script se implementa en los grupos elegidos.
El script que ha creado ahora aparece en la lista de atributos personalizados. Si es necesario, puede ver el contenido de los atributos personalizados después de cargarlos en Intune.
Supervisión de una directiva de atributos personalizados
Para supervisar el estado de ejecución de todos los perfiles de atributo personalizados asignados para usuarios y dispositivos, elija uno de los informes siguientes:
- Atributos personalizados>seleccionar el perfil de atributo personalizado que se va a supervisar>Estado del dispositivo
- Atributos personalizados>seleccionar el perfil de atributo personalizado que se va a supervisar>Estado del usuario
Importante
Los scripts de shell proporcionados en perfiles de atributo personalizados se ejecutan cada 8 horas en equipos Mac administrados y se notifican.
Una vez que se ejecuta un perfil de atributo personalizado, devuelve uno de los siguientes estados:
- Un estado De error indica que el script devolvió un código de salida distinto de cero o que el script tiene un formato incorrecto. El error se notifica en la columna Resultado .
- Como estado correcto indica que el script devolvió cero como código de salida. La salida de la que se hace eco el script se notifica en la columna Resultado .
Preguntas frecuentes
¿Por qué los scripts de shell asignados no se ejecutan en el dispositivo?
Puede haber varias razones:
- Es posible que el agente tenga que protegerse para recibir scripts nuevos o actualizados. Este proceso de registro se produce cada 8 horas y es diferente del registro de MDM. Asegúrese de que el dispositivo está activo y conectado a una red para que se realice correctamente la comprobación del agente y espere a que el agente lo compruebe. También puede solicitar al usuario final que abra portal de empresa en el Equipo Mac, seleccione el dispositivo y haga clic en Comprobar configuración.
- Es posible que el agente no esté instalado. Compruebe que el agente está instalado en
/Library/Intune/Microsoft Intune Agent.app
en el dispositivo macOS. - Es posible que el agente no esté en un estado correcto. El agente intentará recuperarse durante 24 horas, quitarse a sí mismo y volver a instalar si los scripts de shell siguen asignados.
¿Con qué frecuencia se notifica el estado de ejecución del script?
El estado de ejecución del script se notifica al Centro de administración de Microsoft Intune en cuanto se completa la ejecución del script. Si un script está programado para ejecutarse periódicamente con una frecuencia establecida, solo notifica el estado la primera vez que se ejecuta.
¿Cuándo se ejecutan de nuevo los scripts de shell?
Un script se vuelve a ejecutar solo cuando se configura el valor Número máximo de veces que se va a reintentar si se produce un error en el script y el script se produce un error al ejecutarse. Si el número máximo de veces que se reintenta si el script no se configura y se produce un error en la ejecución, no se volverá a ejecutar y el estado de ejecución se notificará como erróneo.
¿Qué permisos de rol de Intune se requieren para los scripts de shell?
El rol assigned-intune requiere permisos de configuración de dispositivos para eliminar, asignar, crear, actualizar o leer scripts de shell.
Problemas conocidos
- Sin estado de ejecución de script: En el improbable caso de que se reciba un script en el dispositivo y el dispositivo se desconecte antes de que se notifique el estado de ejecución, el dispositivo no notificará el estado de ejecución del script en el Centro de administración.
Información adicional
Al implementar scripts de shell o atributos personalizados para dispositivos macOS desde Microsoft Intune, implementa la nueva versión universal de la aplicación del agente de administración de Intune que se ejecuta de forma nativa en equipos Apple Silicon Mac. La misma implementación instalará la versión x64 de la aplicación en máquinas Mac con Intel. Se requiere Rosetta 2 para ejecutar la versión x64 (Intel) de las aplicaciones en equipos Mac con Apple Silicon. Para instalar Rosetta 2 en Apple Silicon Macs automáticamente, puede implementar un script de shell en Intune. Para ver un script de ejemplo, consulte Script de instalación de Rosetta 2.