Scripts de detección de cumplimiento personalizados para Microsoft Intune

Para poder usar la configuración personalizada para el cumplimiento con Microsoft Intune, debe crear un script que detecte la configuración de cumplimiento personalizada en los dispositivos. El script que uses dependerá 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 de detección se implementa en dispositivos como parte de las directivas de cumplimiento personalizadas. Cuando el cumplimiento se ejecuta en un dispositivo, el script detecta la configuración definida en el archivo JSON que se proporciona al crear la directiva de cumplimiento.

Todos los scripts de detección:

  • Se agregan a Intune antes de crear una directiva de cumplimiento. Después de agregar un script, está disponible para seleccionarlo al crear una directiva de cumplimiento con una configuración personalizada.
    • Cada script de detección solo puede usarse con una directiva de cumplimiento y cada directiva de cumplimiento solo puede incluir un script de detección.
    • No se pueden eliminar los scripts de detección asignados a una directiva de cumplimiento hasta que se anule la asignación del script de la directiva.
  • Ejecutar en un dispositivo que reciba la directiva de cumplimiento. El script evalúa las condiciones del archivo JSON que cargue al crear una directiva de cumplimiento personalizada.
  • Identifique una o varias configuraciones, como se define en el JSON, y devuelva una lista de valores detectados para esa configuración.

Además, el script de PowerShell para Windows:

  • Debe comprimirse para generar resultados en una sola línea. Por ejemplo, el siguiente script debe incluirse return $hash | ConvertTo-Json -Compress como última línea:

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

Límites

Para devolver correctamente los datos de cumplimiento a Intune, los scripts deben permanecer dentro de los siguientes límites:

  • 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 siguiente ejemplo es un script de PowerShell de ejemplo que puede 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

En el ejemplo siguiente se muestra la salida del script de ejemplo para Windows:

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

Script de detección de ejemplo para Linux

Nota:

En Linux, los scripts de detección se ejecutan en el contexto del usuario. No pueden comprobar la configuración de nivel del sistema que requiere elevación. Un ejemplo de esta limitación es el state/hash/etc/sudoers del archivo.

Los scripts de descubrimiento para Linux pueden llamar a cualquier intérprete que cumpla con 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 intérprete de un script, incluya una línea shebang en la parte superior del script, que indique la ruta de acceso al binario del intérprete.

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

#!/bin/bash

Para usar Python, especifique la ruta del intérprete. Por ejemplo, agregue la línea siguiente al principio del script: #!/usr/bin/python3 o #!/usr/bin/env python3

Sugerencia

Para controlar las interrupciones o las señales de cancelación, implemente mecanismos de terminación correctos en los scripts. Cuando un script controla estas señales, puede realizar tareas de limpieza y salir correctamente, lo que garantiza que los recursos se liberen correctamente. Por ejemplo, detecte señales como SIGINT (señal de interrupción) o SIGTERM (señal de terminación) y defina acciones personalizadas para ejecutarlas cuando se reciban. Estas acciones pueden incluir cerrar archivos abiertos, liberar bloqueos adquiridos o limpiar recursos temporales.

Para obtener más información, consulte la guía Intune Linux Custom Compliance Samples.

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.

Nota:

El flujo de trabajo de carga de scripts no admite etiquetas de ámbito. Se te debe asignar la etiqueta de ámbito predeterminada para crear, editar o ver scripts de detección de cumplimiento personalizados.

  1. Inicie sesión en el Centro de administración de Microsoft Intune y vaya a Seguridad de punto de conexión> Cumplimiento >de dispositivosAgregar scripts>. A continuación, elige tu plataforma.

  2. En Conceptos básicos, escriba un nombre descriptivo para el script.

  3. En Configuración, agregue el script a Detección. Revise atentamente el guion. Intune no valida el script en busca de errores de sintaxis o programación.

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

    • Ejecute este script con las credenciales que han iniciado sesión : de forma predeterminada, el script se ejecuta en el contexto del sistema en el dispositivo. Establezca este valor en para que se ejecute en el contexto del usuario que inició sesión. Si el usuario no ha iniciado sesión, el script vuelve de forma predeterminada al contexto del sistema.
    • Exigir la comprobación de firmas del script : Para obtener más información, consulte about_Signing en la documentación de PowerShell.
    • Ejecutar script en host de PowerShell de 64 bits : de forma predeterminada, el script se ejecuta con el host de PowerShell de 32 bits. Establezca este valor en para forzar que el script se ejecute en su lugar con el host de 64 bits.
  5. Complete el proceso de creación del script. El script aparece en el panel Scripts y está disponible para seleccionar al configurar directivas de cumplimiento.

Pasos siguientes