Uso de scripts de shell en dispositivos macOS en Intune

Use scripts de shell para ampliar las capacidades 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 automáticamente en equipos Mac con Apple Silicon, 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.
  • Los dispositivos se administran mediante Intune.
  • Los dispositivos se conectan directamente a Internet. No se admite la conexión a través de un proxy.
  • Los scripts de shell comienzan con #! 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 utilizar scripts de shell

  • Los scripts de shell requieren que el agente de administración de Microsoft Intune esté instalado 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 los dispositivos como procesos independientes.
  • Los scripts de shell que se ejecutan cuando el usuario que ha iniciado 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.
  • Se requiere que un usuario final inicie sesión en el dispositivo para ejecutar scripts que se ejecuten como un 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 ciertas condiciones, como si el disco está lleno, si se altera la ubicación de almacenamiento, si se elimina la memoria caché local o si el dispositivo Mac se reinicia.
  • Los scripts de shell que se ejecutan durante más de 60 minutos se detienen y se notifican como "erróneos".

Crear y asignar una directiva de script de shell

  1. Inicie sesión en el Centro de administración de Microsoft Intune.

  2. Seleccionar dispositivos>por plataforma>macOS>Administrar dispositivos>Scripts>Agregar.

  3. En Datos básicos, escriba las siguientes propiedades y seleccione Siguiente:

    • Nombre: escriba un nombre para el script de shell.
    • Descripción: introduzca una descripción para el script de shell. Esta configuración es opcional pero recomendada.
  4. 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 1 MB.
    • Ejecutar script como usuario con la sesión iniciada: seleccione para ejecutar el script con las credenciales de usuario en el dispositivo. Elija No (valor predeterminado) para ejecutar el script como usuario raíz.
    • Ocultar notificaciones de scripts en dispositivos: De forma predeterminada, se muestran notificaciones de script para cada script que se ejecuta. Los usuarios finales ven una notificación de TI está configurando su equipo desde Intune en dispositivos macOS.
    • Frecuencia del guión: Seleccione la frecuencia con la que se ejecutará el script. Elija No configurado (valor predeterminado) para ejecutar un script solo una vez. Los scripts con una frecuencia establecida también se ejecutarán después de reiniciar un dispositivo.
    • Número máximo de veces que se puede volver a intentar 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 significa éxito). Elija No configurado (valor predeterminado) para no volver a intentarlo cuando se produzca un error en una secuencia de comandos.
  5. En Etiquetas de ámbito, opcionalmente, agregue etiquetas de ámbito para el script y seleccione Siguiente. Puede usar etiquetas de ámbito para determinar quién puede ver los scripts en Intune. Para obtener información detallada sobre las etiquetas de ámbito, consulte Uso del control de acceso basado en roles y etiquetas de ámbito para TI distribuida.

  6. 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 Mac.
    • La actualización de asignaciones de scripts de shell también actualiza las asignaciones del agente MDM de Microsoft Intune para macOS.
  7. 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.

Supervisar una directiva de script de shell

Puede supervisar el estado de ejecución de todos los scripts asignados para usuarios y dispositivos eligiendo uno de los siguientes informes:

  • Scripts>Seleccione el script que se va a supervisar>Estado del dispositivo
  • Scripts>Seleccione el script que se va a supervisar>Estado del usuario

Importante

Independientemente de la frecuencia de los scripts seleccionados, el estado de ejecución del script solo se notifica cuando el estado cambia con respecto al último informe. Por ejemplo, si un script informa de éxito en una ejecución y de error en la siguiente, Intune actualiza tanto el estado como la marca de tiempo de la última actualización con la información de ejecución actual. Si el estado del script no cambia entre sincronizaciones, Intune actualiza la última marca de tiempo actualizada cada 7 días a partir de la ejecución inicial.

Una vez que se ejecuta un script, devuelve uno de los siguientes estados:

  • Un estado de ejecución de script de 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.
  • Las rutas de acceso de los archivos se deben separar solo con punto y coma (;).
  • El tamaño máximo de recopilación de registros para cargar es de 60 MB (comprimido) o 25 archivos, lo que ocurra primero.
  • Entre los tipos de archivos permitidos para la recopilación de registros se incluyen las siguientes extensiones: .log, .zip, .gz, .tar, .txt, .xml, .crash .rtf

Recopilar registros de dispositivos

  1. Inicie sesión en el Centro de administración de Microsoft Intune.

  2. Vaya a Dispositivos>,Administrar dispositivos>, scripts y correcciones,>scripts de plataforma y seleccione un script de shell de macOS.

  3. En Informe de estado del dispositivo o Estado del usuario , seleccione un dispositivo.

  4. Seleccione Recopilar registros, proporcione rutas de acceso a carpetas de archivos de registro separadas solo por punto y coma (;) sin espacios ni nuevas líneas entre las rutas.
    Por ejemplo, varias rutas deben escribirse como /Path/to/logfile1.zip;/Path/to/logfile2.log.

    Importante

    Si hay varias rutas de acceso al archivo de registro separadas mediante comas, puntos, saltos de línea o comillas con o sin espacios, se producirá un error de recopilación de registros. Tampoco se permiten espacios como separadores entre rutas de acceso.

  5. Seleccione Aceptar. Los registros se recopilan la próxima vez que el agente de administración de Intune en el dispositivo se registre con Intune. Este control generalmente ocurre cada 8 horas.

    Nota:

    • Los registros recopilados se cifran en el dispositivo, se transmiten y se almacenan en el almacenamiento de Microsoft Azure durante 30 días. Los registros almacenados se descifran a petición y se descargan con 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 los archivos de registro del agente son IntuneMDMDaemon date--time.log y IntuneMDMAgent 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 las siguientes razones proporcionadas 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 tienen un tamaño inferior a 60 MB.
0X87D300D1 2016214831 Debe existir la ruta de acceso del archivo de registro proporcionada. 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 Se ha producido un error al cargar el archivo de recopilación de registros debido a la expiración de la URL de carga. Vuelva a intentar la acción Recopilar registros .
0X87D300D3, 0X87D300D5, 0X87D300D7 2016214829, 2016214827, 2016214825 Se produjo un error en la carga del archivo de recopilación de registros debido a un error de cifrado. Reintente cargar el registro. Vuelva a intentar la acción Recopilar registros .
2016214828 El número de archivos de registro superó el límite permitido de 25. Solo se pueden recopilar hasta 25 archivos de registro a la vez.
0X87D300D6 2016214826 Se produjo un error en la carga del archivo de recopilación de registros debido a un error zip. Reintente cargar el 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 de dispositivos macOS administrados mediante scripts de shell.

Crear y asignar un atributo personalizado para dispositivos macOS

  1. Inicie sesión en el Centro de administración de Microsoft Intune.

  2. Seleccionar dispositivos>por plataforma>macOS>Organizar dispositivos>Atributos personalizados para macOS>Add.

  3. 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.
  4. En Configuración de atributo, escriba las siguientes propiedades y seleccione Siguiente:

    • Tipo de datos de atributo: seleccione el tipo de datos del resultado que devuelve el script. Los valores disponibles son Cadena, Entero y Fecha.
    • Script: seleccione un archivo de script.

    Detalles adicionales:

    • El script de shell debe hacerse 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 utilizar Date atributos de tipo, asegúrese de que el script de shell devuelve las 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
    
  5. En Tareas, haga clic en Seleccionar grupos para incluir. Cuando elige 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 junto a Asignar a.

    Nota:

    • Los scripts asignados a grupos de usuarios se aplican a cualquier usuario que inicie sesión en el Mac.
  6. 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.

Supervisar una directiva de atributos personalizada

Puede supervisar el estado de ejecución de todos los perfiles de atributos personalizados asignados para usuarios y dispositivos eligiendo uno de los siguientes informes:

  • Atributos> personalizadosSeleccione el perfil de atributo personalizado que se va a supervisar>Estado del dispositivo
  • Atributos> personalizadosSeleccione el perfil de atributo personalizado que se va a supervisar>Estado del usuario

Importante

Los scripts de shell proporcionados en perfiles de atributos 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 .
  • El estado de Correcto indica que el script devolvió cero como código de salida. El resultado del que se repite el script se indica en la columna Resultado .

Preguntas frecuentes

¿Por qué no se ejecutan los scripts de shell asignados en el dispositivo?

Puede haber varias razones:

  • Es posible que el agente tenga que registrarse 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 un registro de agente correcto y espere a que el agente se registre. También puede solicitar al usuario final que abra el Portal de empresa en el 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 el dispositivo macOS.
  • Es posible que el agente no esté en buen estado. El agente intentará recuperarse durante 24 horas, quitarse a sí mismo y volver a instalarse si los scripts de shell aún están 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 tan pronto como se completa la ejecución del script. Si un script está programado para ejecutarse periódicamente con una frecuencia determinada, solo notifica el estado la primera vez que se ejecuta.

¿Cuándo se vuelven a ejecutar los scripts de shell?

Un script se vuelve a ejecutar solo cuando se configura el número máximo de veces que se debe reintentar si se produce un error en el script y se produce un error en el script al ejecutarse. Si no se configura el número máximo de veces que se debe reintentar si se produce un error en el script y se produce un error en la ejecución del script, no se volverá a ejecutar y el estado de ejecución se notificará como incorrecto.

¿Qué permisos de rol de Intune son necesarios para los scripts de shell?

El rol de Intune asignado requiere permisos de configuración de dispositivo para eliminar, asignar, crear, actualizar o leer scripts de shell.

Problemas conocidos

  • Estado de ejecución de ningún 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 Mac con Apple Silicon. 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 automáticamente en equipos Mac con Apple Silicon, puede implementar un script de shell en Intune. Para ver un script de ejemplo, consulte Script de instalación de Rosetta 2.

Pasos siguientes