Scripts de detección de cumplimiento personalizados para Microsoft Intune

Para poder usar la configuración personalizada para el cumplimiento con Microsoft Intune, debe definir un script para la detección de la configuración de cumplimiento personalizada en los dispositivos. El script que use depende de la plataforma:

  • Los dispositivos Windows usan un script de PowerShell
  • Los dispositivos Linux pueden ejecutar scripts en cualquier idioma siempre que el intérprete correspondiente esté instalado y configurado en el dispositivo.

El script se implementa en los dispositivos como parte de las directivas de cumplimiento personalizadas. Cuando se ejecuta el cumplimiento, el script detecta la configuración definida por el archivo JSON que también proporciona a través de la directiva de cumplimiento personalizada.

Todos los scripts de detección:

  • Se agregan a Intune antes de crear una directiva de cumplimiento. Después de agregarlos, los scripts están disponibles para seleccionar al crear una directiva de cumplimiento con la configuración personalizada.
    • Cada script de detección solo se puede usar con una directiva de cumplimiento y cada directiva de cumplimiento solo puede incluir un script de detección.
    • Los scripts de detección que se han asignado a una directiva de cumplimiento no se pueden eliminar hasta que el script no se haya asignado de la directiva.
  • Ejecute en un dispositivo que reciba la directiva de cumplimiento. El script evalúa las condiciones del archivo JSON que carga al crear una directiva de cumplimiento personalizada.
  • Identifique una o varias opciones de configuración, como se define en json, y devuelva una lista de valores detectados para esa configuración. Se puede asignar un único script a cada directiva y admite la detección de varias configuraciones.

Además, el script de PowerShell para Windows:

  • Debe comprimirse para generar resultados en una sola línea.
  • Por ejemplo: $hash = @{ Manufacturer = $WMI_ComputerSystem.Manufacturer; BiosVersion = $WMI_BIOS.SMBIOSBIOSVersion; TPMChipPresent = $TPM.TPMPresent} debe incluir la siguiente línea al final del script: return $hash | ConvertTo-Json -Compress

Límites

Los scripts que escriba deben estar dentro de los límites siguientes para devolver correctamente los datos de cumplimiento a Intune:

  • Los scripts no pueden tener más de 1 megabyte (MB) cada uno.
  • La salida generada por cada script no puede ser mayor que 1 MB.
  • Los scripts deben tener un tiempo de ejecución limitado:
    • En Linux, los scripts deben tardar cinco minutos o menos en ejecutarse.
    • En Windows, los scripts deben tardar 10 minutos o menos en ejecutarse.

Script de detección de ejemplo para Windows

El ejemplo siguiente es un script de PowerShell de ejemplo que podría usar para dispositivos Windows:

$WMI_ComputerSystem = Get-WMIObject -class Win32_ComputerSystem
$WMI_BIOS = Get-WMIObject -class Win32_BIOS 
$TPM = Get-Tpm

$hash = @{ Manufacturer = $WMI_ComputerSystem.Manufacturer; BiosVersion = $WMI_BIOS.SMBIOSBIOSVersion; TPMChipPresent = $TPM.TPMPresent}
return $hash | ConvertTo-Json -Compress

A continuación se muestra un ejemplo de la salida del script de ejemplo anterior:

{"BiosVersion":"1.24","Manufacturer":"Microsoft Corporation","TPMChipPresent":true}

Script de detección de ejemplo para Linux

Nota:

Los scripts de detección en Linux se ejecutan en el contexto del usuario y, por tanto, no pueden comprobar la configuración de nivel de sistema que requiere elevación. Un ejemplo de esto es el state/hash del /etc/sudoers archivo .

Los scripts de detección para Linux pueden llamar a cualquier interpeter que cumpla sus requisitos. Asegúrese de que el intérprete elegido está instalado y configurado correctamente en el dispositivo de destino antes de implementar el script. Para especificar el valor de intepreter para un script, incluya una línea shebang en la parte superior del script, que indica la ruta de acceso al binario del intérprete.

Por ejemplo, si el script debe usar el shell de Bash como intérprete, agregue la siguiente línea en la parte superior del script:

[ !/bin/bash ]

Si desea usar Python para el script, indique dónde está instalado el intérprete. Por ejemplo, agregue lo siguiente a la parte superior del script: [ !/usr/bin/python3 ] o [ !/usr/bin/env python ]

Procedimiento recomendado: la implementación de mecanismos de terminación correctos en los scripts les permite controlar escenarios como interrupciones o señales de cancelación. Al almacenar en caché y controlar estas señales correctamente, el script puede realizar tareas de limpieza y existir correctamente, lo que garantiza que los recursos se liberen correctamente. Por ejemplo, puede detectar señales específicas como SIGINT (señal de interrupción) o SIGTERM (señal de terminación) y definir acciones personalizadas que se ejecutarán cuando se reciban estas señales. Estas acciones pueden incluir el cierre de archivos abiertos, la liberación de bloqueos adquiridos o la limpieza de recursos temporales. El control correcto de las señales ayuda a mantener la integridad del script y a mejorar la experiencia general del usuario.

Para obtener más información, es posible que se usen las siguientes guías:

Agregar un script de detección a Intune

Antes de implementar el script en producción, pruébelo en un entorno aislado para asegurarse de que la sintaxis que usa se comporta según lo esperado.

  1. Inicie sesión en Microsoft Intune centro de administración y vaya a Endpoint security>Device compliance>Scripts>Add>(choose your platform).

  2. En Conceptos básicos, proporcione un nombre.

  3. En Configuración, agregue el script al script de detección. Revise el script cuidadosamente. Intune no valida el script para los errores de sintaxis o programación.

  4. Solo para Windows : en Configuración, configure el comportamiento siguiente para el script de PowerShell:

    • Ejecute este script con las credenciales iniciadas : de forma predeterminada, el script se ejecuta en el contexto del sistema en el dispositivo. Establezca este valor en Sí para que se ejecute en el contexto del usuario que ha iniciado sesión. Si el usuario no ha iniciado sesión, el script vuelve de forma predeterminada al contexto del sistema.
    • Aplicar comprobación de firma de script : para obtener más información, consulte about_Signing en la documentación de PowerShell.
    • Ejecutar script en un host de PowerShell de 64 bits : de forma predeterminada, el script se ejecuta mediante el host de PowerShell de 32 bits. Establezca este valor en para forzar que el script se ejecute mediante el host de 64 bits en su lugar.
  5. Complete el proceso de creación del script. El script ahora está visible en el panel Scripts del centro de administración de Microsoft Intune y está disponible para seleccionarlo al configurar las directivas de cumplimiento.

Además, tenga en cuenta que el flujo de trabajo para cargar estos scripts en el centro de administración de Microsoft Intune no admite etiquetas de ámbito en este momento. Debe tener como destino la etiqueta de ámbito predeterminada para crear, editar o ver scripts de detección de cumplimiento personalizados.

Siguientes pasos