Scripts de découverte de conformité personnalisés pour Microsoft Intune

Avant de pouvoir utiliser des paramètres personnalisés pour la conformité avec Microsoft Intune, vous devez définir un script pour la découverte des paramètres de conformité personnalisés sur les appareils. Le script que vous utilisez dépend de la plateforme :

  • Les appareils Windows utilisent un script PowerShell
  • Les appareils Linux peuvent exécuter des scripts dans n’importe quelle langue tant que l’interpréteur correspondant est installé et configuré sur l’appareil

Le script est déployé sur des appareils dans le cadre de vos stratégies de conformité personnalisées. Lors de l’exécution de la conformité, le script découvre les paramètres définis par le fichier JSON que vous fournissez également par le biais d’une stratégie de conformité personnalisée.

Tous les scripts de découverte :

  • Sont ajoutés à Intune avant de créer une stratégie de conformité. Une fois ajoutés, les scripts peuvent être sélectionnés lorsque vous créez une stratégie de conformité avec des paramètres personnalisés.
    • Chaque script de découverte ne peut être utilisé qu’avec une seule stratégie de conformité, et chaque stratégie de conformité ne peut inclure qu’un seul script de découverte.
    • Les scripts de découverte qui ont été affectés à une stratégie de conformité ne peuvent pas être supprimés tant que le script n’a pas été désaffecté de la stratégie.
  • Exécutez sur un appareil qui reçoit la stratégie de conformité. Le script évalue les conditions du fichier JSON que vous chargez lors de la création d’une stratégie de conformité personnalisée.
  • Identifiez un ou plusieurs paramètres, tels que définis dans le JSON, et retournez une liste de valeurs découvertes pour ces paramètres. Un seul script peut être affecté à chaque stratégie et prend en charge la découverte de plusieurs paramètres.

En outre, le script PowerShell pour Windows :

  • Doit être compressé pour générer les résultats en une seule ligne.
  • Par exemple : $hash = @{ Manufacturer = $WMI_ComputerSystem.Manufacturer; BiosVersion = $WMI_BIOS.SMBIOSBIOSVersion; TPMChipPresent = $TPM.TPMPresent} doit inclure la ligne suivante à la fin du script : return $hash | ConvertTo-Json -Compress

Limites

Les scripts que vous écrivez doivent respecter les limites suivantes pour retourner correctement les données de conformité à Intune :

  • Les scripts ne peuvent pas dépasser 1 mégaoctet (Mo) chacun.
  • La sortie générée par chaque script ne peut pas être supérieure à 1 Mo.
  • Les scripts doivent avoir une durée d’exécution limitée :
    • Sur Linux, l’exécution des scripts doit prendre cinq minutes ou moins.
    • Sur Windows, l’exécution des scripts doit prendre 10 minutes ou moins.

Exemple de script de découverte pour Windows

L’exemple suivant est un exemple de script PowerShell que vous pouvez utiliser pour les appareils 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

Voici un exemple de sortie de l’exemple de script ci-dessus :

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

Exemple de script de découverte pour Linux

Remarque

Les scripts de découverte dans Linux sont exécutés dans le contexte de l’utilisateur et, par conséquent, ils ne peuvent pas case activée pour les paramètres de niveau système qui nécessitent une élévation. Le fichier en est un state/hash/etc/sudoers exemple.

Les scripts de découverte pour Linux peuvent appeler n’importe quel interpeter qui répond à vos besoins. Vérifiez que l’interpréteur choisi est correctement installé et configuré sur l’appareil ciblé avant le déploiement du script. Pour spécifier l’intepreter d’un script, incluez une ligne shebang en haut du script, indiquant le chemin d’accès au binaire de l’interpréteur.

Par exemple, si votre script doit utiliser l’interpréteur de commandes Bash, ajoutez la ligne suivante en haut de votre script :

[ !/bin/bash ]

Si vous souhaitez utiliser Python pour votre script, indiquez où l’interpréteur est installé. Par exemple, ajoutez le code suivant en haut de votre script : [ !/usr/bin/python3 ] ou [ !/usr/bin/env python ]

Bonne pratique recommandée : L’implémentation de mécanismes d’arrêt appropriés dans vos scripts leur permet de gérer des scénarios tels que des interruptions ou des signaux d’annulation. En mettant en cache et en gérant correctement ces signaux, votre script peut effectuer des tâches de nettoyage et exister correctement, garantissant ainsi que les ressources sont correctement libérées. Par exemple, vous pouvez intercepter des signaux spécifiques tels que SIGINT (signal d’interruption) ou SIGTERM (signal de terminaison) et définir des actions personnalisées à exécuter lors de la réception de ces signaux. Ces actions peuvent inclure la fermeture des fichiers ouverts, la libération des verrous acquis ou le nettoyage des ressources temporaires. La gestion correcte des signaux permet de maintenir l’intégrité des scripts et d’améliorer l’expérience utilisateur globale.

Pour plus d’informations, les guides suivants peuvent être utilisés :

Ajouter un script de découverte à Intune

Avant de déployer votre script en production, testez-le dans un environnement isolé pour vous assurer que la syntaxe que vous utilisez se comporte comme prévu.

  1. Connectez-vous à Microsoft Intune Centre d’administration et accédez à Sécurité des points de terminaison>Scripts> deconformité> des appareilsAjouter>(choisissez votre plateforme).

  2. Dans Informations de base, indiquez un nom.

  3. Dans Paramètres, ajoutez votre script au script de détection. Examinez attentivement votre script. Intune ne valide pas le script pour les erreurs de syntaxe ou de programmation.

  4. Pour Windows uniquement - Dans Paramètres, configurez le comportement suivant pour le script PowerShell :

    • Exécuter ce script à l’aide des informations d’identification de connexion : par défaut, le script s’exécute dans le contexte Système sur l’appareil. Définissez cette valeur sur Oui pour qu’elle s’exécute dans le contexte de l’utilisateur connecté. Si l’utilisateur n’est pas connecté, le script revient par défaut au contexte système.
    • Appliquer la signature de script case activée : pour plus d’informations, consultez about_Signing dans la documentation PowerShell.
    • Exécuter le script dans l’hôte PowerShell 64 bits : par défaut, le script s’exécute à l’aide de l’hôte PowerShell 32 bits. Définissez cette valeur sur Oui pour forcer l’exécution du script à l’aide de l’hôte 64 bits à la place.
  5. Terminez le processus de création de script. Le script est désormais visible dans le volet Scripts du centre d’administration Microsoft Intune et peut être sélectionné lors de la configuration des stratégies de conformité.

Notez également que le flux de travail pour charger ces scripts dans le centre d’administration Microsoft Intune ne prend pas en charge les balises d’étendue pour l’instant. Vous devez être ciblé avec la balise d’étendue par défaut pour créer, modifier ou voir des scripts de découverte de conformité personnalisés.

Prochaines étapes