Utiliser des scripts shell sur des appareils macOS dans Intune

Utilisez des scripts shell pour étendre les fonctionnalités de gestion des appareils dans Intune, au-delà de ce qui est pris en charge par le système d’exploitation macOS.

Remarque

Rosetta 2 est requis pour exécuter la version x64 (Intel) des applications sur des ordinateurs Mac Apple Silicon. Pour installer Automatiquement Rosetta 2 sur les Mac Apple Silicon, vous pouvez déployer un script shell dans Intune. Pour afficher un exemple de script, consultez Script d’installation de Rosetta 2.

Configuration requise

Vérifiez que les conditions préalables suivantes sont remplies lors de la composition de scripts d’interpréteur de commandes et de leur affectation à des appareils macOS.

  • Les appareils exécutent macOS 12.0 ou version ultérieure.
  • Les appareils sont gérés par Intune.
  • Les appareils sont connectés directement à Internet. La connexion via un proxy n’est pas prise en charge.
  • Les scripts shell commencent par #! et doivent se trouver à un emplacement valide tel que #!/bin/sh ou #!/usr/bin/env zsh.
  • Les interpréteurs de ligne de commande pour les interpréteurs de commandes applicables sont installés.

Considérations importantes avant d’utiliser des scripts d’interpréteur de commandes

  • Les scripts shell nécessitent que l’agent de gestion Microsoft Intune soit correctement installé sur l’appareil macOS. Pour plus d’informations, consultez Agent de gestion Microsoft Intune pour macOS.
  • Les scripts shell s’exécutent en parallèle sur les appareils en tant que processus distincts.
  • Les scripts shell exécutés en tant qu’utilisateur connecté s’exécutent pour tous les comptes d’utilisateur actuellement connectés sur l’appareil au moment de l’exécution.
  • Un utilisateur final doit se connecter à l’appareil pour exécuter des scripts s’exécutant en tant qu’utilisateur connecté.
  • Des privilèges d’utilisateur racine sont requis si le script nécessite des modifications qu’un compte d’utilisateur standard ne peut pas apporter.
  • Les scripts shell tentent de s’exécuter plus fréquemment que la fréquence de script choisie pour certaines conditions, par exemple si le disque est plein, si l’emplacement de stockage est falsifié, si le cache local est supprimé ou si l’appareil Mac redémarre.
  • Les scripts shell qui s’exécutent pendant plus de 60 minutes sont arrêtés et signalés comme étant « en échec ».

Créer et affecter une stratégie de script shell

  1. Connectez-vous au Centre d’administration Microsoft Intune.

  2. Sélectionnez Appareils>Par plateforme>macOS>Gérer les appareils>Scripts>Ajouter.

  3. Dans Informations de base, entrer les propriétés suivantes, puis sélectionner Suivant :

    • Nom : entrez un nom pour le script shell.
    • Description : entrez une description pour le script shell. Ce paramètre est facultatif, mais recommandé.
  4. Dans Paramètres du script, entrer les propriétés suivantes, puis sélectionner Suivant :

    • Charger le script : accédez au script d’interpréteur de commandes. La taille du fichier de script doit être inférieure à 200 Ko.
    • Exécuter le script en tant qu’utilisateur connecté : sélectionnez Oui pour exécuter le script avec les informations d’identification de l’utilisateur sur l’appareil. Choisissez Non (par défaut) pour exécuter le script en tant qu’utilisateur racine.
    • Masquer les notifications de script sur les appareils : Par défaut, les notifications de script sont affichées pour chaque script exécuté. Les utilisateurs finaux voient qu’un service informatique configure votre notification d’ordinateur à partir d’Intune sur des appareils macOS.
    • Fréquence de script : Sélectionnez la fréquence d’exécution du script. Choisissez Non configuré (valeur par défaut) pour exécuter un script une seule fois. Les scripts avec une fréquence définie s’exécutent également après le redémarrage d’un appareil.
    • Nombre maximal de nouvelles tentatives en cas d’échec du script : Sélectionnez le nombre de fois où le script doit être exécuté s’il retourne un code de sortie différent de zéro (zéro signifie réussite). Choisissez Non configuré (valeur par défaut) pour ne pas réessayer en cas d’échec d’un script.
  5. Dans Balises d’étendue, ajoutez éventuellement des balises d’étendue pour le script, puis sélectionnez Suivant. Vous pouvez utiliser des balises d’étendue pour déterminer qui peut voir les scripts dans Intune. Pour plus d’informations sur les balises d’étendue, consultez Utiliser le contrôle d’accès en fonction du rôle et les balises d’étendue pour l’informatique distribuée.

  6. Sélectionnez Affectations>Sélectionner les groupes à inclure. Une liste existante des groupes Microsoft Entra s’affiche. Sélectionnez un ou plusieurs groupes d’utilisateurs ou d’appareils qui doivent recevoir le script. Choisir Sélectionner. Les groupes que vous choisissez sont affichés dans la liste et recevront votre stratégie de script.

    Remarque

    • Les scripts Shell attribués à des groupes d’utilisateurs s’appliquent à tout utilisateur qui se connecte au Mac.
    • La mise à jour des affectations pour les scripts d’interpréteur de commandes met également à jour les affectations pour Microsoft Intune MDM Agent pour macOS.
  7. Dans Passer en revue + ajouter, vous voyez un récapitulatif des paramètres que vous avez configurés. Sélectionnez Ajouter pour enregistrer le script. Lorsque vous sélectionnez Ajouter, la stratégie de script est déployée sur les groupes que vous avez choisis.

Le script que vous avez créé apparaît maintenant dans la liste des scripts. Si nécessaire, vous pouvez afficher le contenu des scripts de l’interpréteur de commandes macOS après les avoir chargés dans Intune.

Surveiller une stratégie de script shell

Vous pouvez surveiller l’état d’exécution de tous les scripts attribués pour les utilisateurs et les appareils en choisissant l’un des rapports suivants :

  • Scripts>sélectionner le script à surveiller>État de l’appareil
  • Scripts>sélectionner le script à surveiller>État de l’utilisateur

Importante

Quelle que soit la fréquence de script sélectionnée, l’état d’exécution du script n’est signalé que la première fois qu’un script est exécuté. L’état de l’exécution du script n’est pas mis à jour lors des exécutions suivantes. Toutefois, les scripts mis à jour sont traités comme de nouveaux scripts et signalent à nouveau l’état d’exécution.

Une fois qu’un script est exécuté, il retourne l’un des états suivants :

  • L’état d’exécution du script Failed indique que le script a retourné un code de sortie différent de zéro ou que le script est mal formé.
  • Un état d’exécution de script de Réussite indique que le script a retourné zéro comme code de sortie.

Résoudre les problèmes liés aux stratégies de script shell macOS à l’aide de la collecte de journaux

Vous pouvez collecter les journaux d’activité des appareils pour résoudre les problèmes de script sur les appareils macOS.

Configuration requise pour la collecte des journaux

Les éléments suivants sont requis pour collecter les journaux sur un appareil macOS :

  • Vous devez spécifier le chemin du fichier journal absolu complet.
  • Les chemins d’accès aux fichiers doivent être séparés uniquement à l’aide d’un point-virgule (;).
  • La taille maximale de la collection de journaux à charger est de 60 Mo (compressé) ou de 25 fichiers, selon ce qui se produit en premier.
  • Les types de fichiers autorisés pour la collecte de journaux incluent les extensions suivantes : .log, .zip, .gz, .tar, .txt, .xml, .crash, .rtf

Collecter les journaux d’activité des appareils

  1. Connectez-vous au Centre d’administration Microsoft Intune.

  2. Accédez à Appareils>Gérer les appareils>Scripts et corrections>Scripts de plateforme , puis sélectionnez un script d’interpréteur de commandes macOS.

  3. Dans État de l’appareil ou État de l’utilisateur , sélectionnez un appareil.

  4. Sélectionnez Collecter les journaux, fournissez les chemins d’accès aux dossiers des fichiers journaux séparés uniquement par un point-virgule (;) sans espaces ni nouvelles lignes entre les chemins d’accès.
    Par exemple, plusieurs chemins d’accès doivent être écrits en tant que /Path/to/logfile1.zip;/Path/to/logfile2.log.

    Importante

    Plusieurs chemins d’accès au fichier journal séparés par des virgules, des points, des sauts de ligne ou des guillemets avec ou sans espaces entraînent une erreur de collecte des journaux. Les espaces ne sont pas non plus autorisés comme séparateurs entre les chemins.

  5. Sélectionnez OK. Les journaux sont collectés la prochaine fois que l’agent de gestion Intune sur l’appareil s’enregistre auprès d’Intune. Cet enregistrement se produit généralement toutes les 8 heures.

    Remarque

    • Les journaux collectés sont chiffrés sur l’appareil, transmis et stockés dans le stockage Microsoft Azure pendant 30 jours. Les journaux stockés sont déchiffrés à la demande et téléchargés à l’aide du Centre d’administration Microsoft Intune.
    • En plus des journaux spécifiés par l’administrateur, les journaux de l’agent de gestion Intune sont également collectés à partir des dossiers suivants : /Library/Logs/Microsoft/Intune et ~/Library/Logs/Microsoft/Intune. Les noms des fichiers journaux de l’agent sont IntuneMDMDaemon date--time.log et IntuneMDMAgent date--time.log.
    • Si un fichier spécifié par l’administrateur est manquant ou si l’extension de fichier est incorrecte, vous trouverez ces noms de fichiers répertoriés dans LogCollectionInfo.txt.

Erreurs de collecte de journaux

La collecte des journaux peut ne pas réussir en raison de l’une des raisons suivantes fournies dans le tableau ci-dessous. Pour résoudre ces erreurs, suivez les étapes de correction.

Code d’erreur (hexadécimal) Code d’erreur (déc) Message d’erreur Procédure de correction
0X87D300D1 2016214834 La taille du fichier journal ne peut pas dépasser 60 Mo. Vérifiez que la taille des journaux compressés est inférieure à 60 Mo.
0X87D300D1 2016214831 Le chemin du fichier journal fourni doit exister. Le dossier utilisateur système est un emplacement non valide pour les fichiers journaux. Vérifiez que le chemin d’accès au fichier fourni est valide et accessible.
0X87D300D2 2016214830 Le chargement du fichier de collecte de journaux a échoué en raison de l’expiration de l’URL de chargement. Réessayez l’action Collecter les journaux .
0X87D300D3, 0X87D300D5, 0X87D300D7 2016214829, 2016214827, 2016214825 Le chargement du fichier de collecte de journaux a échoué en raison d’un échec du chiffrement. Réessayez de charger le journal. Réessayez l’action Collecter les journaux .
2016214828 Le nombre de fichiers journaux a dépassé la limite autorisée de 25 fichiers. Seuls 25 fichiers journaux peuvent être collectés à la fois.
0X87D300D6 2016214826 Le chargement du fichier de collecte de journaux a échoué en raison d’une erreur zip. Réessayez de charger le journal. Réessayez l’action Collecter les journaux .
2016214740 Les journaux d’activité n’ont pas pu être chiffrés, car les journaux compressés sont introuvables. Réessayez l’action Collecter les journaux .
2016214739 Les journaux ont été collectés mais n’ont pas pu être stockés. Réessayez l’action Collecter les journaux .

Attributs personnalisés pour macOS

Vous pouvez créer des profils d’attribut personnalisés qui vous permettent de collecter des propriétés personnalisées à partir d’un appareil macOS géré à l’aide de scripts shell.

Créer et attribuer un attribut personnalisé pour les appareils macOS

  1. Connectez-vous au Centre d’administration Microsoft Intune.

  2. Sélectionnez Appareils>Par plateforme>macOS>Organiser les appareils>Attributs personnalisés pour macOS>Ajouter.

  3. Dans Informations de base, entrer les propriétés suivantes, puis sélectionner Suivant :

    • Nom : entrez un nom pour le script.
    • Description : entrez une description pour le script. Ce paramètre est facultatif, mais recommandé.
  4. Dans Paramètres d’attribut, entrez les propriétés suivantes, puis sélectionnez Suivant :

    • Type de données de l’attribut : sélectionnez le type de données du résultat retourné par le script. Les valeurs disponibles sont String, Integer et Date.
    • Script : sélectionnez un fichier de script.

    Détails supplémentaires :

    • Le script shell doit faire écho à l’attribut à signaler et le type de données de la sortie doit correspondre au type de données de l’attribut dans le profil d’attribut personnalisé.
    • Le résultat retourné par le script shell doit être inférieur ou égal à 20 Ko.

    Remarque

    Lorsque vous utilisez Date des attributs de type, assurez-vous que le script shell retourne des dates au format ISO-8601. Consultez les exemples ci-dessous.

    Pour imprimer une date conforme à la norme ISO-8601 avec fuseau horaire :

    #!/bin/sh
    var=$(date +"%Y-%m-%dT%H:%M:%S%z")
    echo $var # Prints an ISO-8601 compliant date with time-zone
    

    Pour imprimer une date conforme à la norme ISO-8601 en heure UTC :

    #!/bin/sh
    var=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
    echo $var # Prints an ISO-8601 compliant date in UTC time
    
  5. Dans Affectations, cliquez sur Sélectionner les groupes à inclure. Lorsque vous choisissez Sélectionner des groupes pour inclure une liste existante de groupes Microsoft Entra s’affiche. Sélectionnez un ou plusieurs groupes d’utilisateurs ou d’appareils qui doivent recevoir le script. Choisir Sélectionner. Les groupes que vous choisissez sont affichés dans la liste et recevront votre stratégie de script. Vous pouvez également choisir de sélectionner Tous les utilisateurs, Tous les appareils ou Tous les utilisateurs et tous les appareils en sélectionnant l’une de ces options dans la zone de liste déroulante en regard de Attribuer à.

    Remarque

    • Les scripts attribués aux groupes d’utilisateurs s’appliquent à tout utilisateur qui se connecte au Mac.
  6. Dans Passer en revue + ajouter, vous voyez un récapitulatif des paramètres que vous avez configurés. Sélectionnez Ajouter pour enregistrer le script. Lorsque vous sélectionnez Ajouter, la stratégie de script est déployée sur les groupes que vous avez choisis.

Le script que vous avez créé apparaît maintenant dans la liste des attributs personnalisés. Si nécessaire, vous pouvez afficher le contenu des attributs personnalisés après les avoir chargés dans Intune.

Surveiller une stratégie d’attribut personnalisée

Vous pouvez surveiller l’état d’exécution de tous les profils d’attribut personnalisés attribués pour les utilisateurs et les appareils en choisissant l’un des rapports suivants :

  • Attributs> personnaliséssélectionner le profil d’attribut personnalisé à surveiller>État de l’appareil
  • Attributs> personnaliséssélectionner le profil d’attribut personnalisé à surveiller>État de l’utilisateur

Importante

Les scripts Shell fournis dans les profils d’attribut personnalisés sont exécutés toutes les 8 heures sur les Mac gérés et signalés.

Une fois qu’un profil d’attribut personnalisé s’exécute, il retourne l’un des états suivants :

  • L’état Échec indique que le script a retourné un code de sortie différent de zéro ou que le script est mal formé. L’erreur est signalée dans la colonne Résultat .
  • Comme l’état de Réussite indique que le script a retourné zéro comme code de sortie. La sortie répercutée par le script est signalée dans la colonne Résultat .

Foire aux questions

Pourquoi les scripts shell attribués ne s’exécutent-ils pas sur l’appareil ?

Il peut y avoir plusieurs raisons :

  • L’agent peut avoir besoin de s’enregistrer pour recevoir des scripts nouveaux ou mis à jour. Ce processus d’enregistrement se produit toutes les 8 heures et est différent de l’enregistrement MDM. Assurez-vous que l’appareil est en éveil et connecté à un réseau pour un enregistrement de l’agent réussi et attendez que l’agent s’en check-in. Vous pouvez également demander à l’utilisateur final d’ouvrir portail d’entreprise sur le Mac, de sélectionner l’appareil et de cliquer sur Vérifier les paramètres.
  • L’agent n’est peut-être pas installé. Vérifiez que l’agent est installé /Library/Intune/Microsoft Intune Agent.app sur l’appareil macOS.
  • L’agent n’est peut-être pas dans un état sain. L’agent tente de récupérer pendant 24 heures, de se supprimer et de réinstaller si des scripts d’interpréteur de commandes sont toujours affectés.

À quelle fréquence l’état d’exécution du script est-il signalé ?

L’état de l’exécution du script est signalé au Centre d’administration Microsoft Intune dès que l’exécution du script est terminée. Si un script est planifié pour s’exécuter régulièrement à une fréquence définie, il ne signale l’état que la première fois qu’il s’exécute.

Quand les scripts shell sont-ils réexécuté ?

Un script est réexécuté uniquement lorsque le paramètre Nombre maximal de nouvelles tentatives en cas d’échec du script est configuré et que le script échoue lors de l’exécution. Si le nombre maximal de nouvelles tentatives en cas d’échec du script n’est pas configuré et qu’un script échoue lors de l’exécution, il ne sera pas réexécuté et l’état de l’exécution sera signalé comme ayant échoué.

Quelles sont les autorisations de rôle Intune requises pour les scripts shell ?

Votre rôle assigned-intune nécessite des autorisations Configurations d’appareil pour supprimer, attribuer, créer, mettre à jour ou lire des scripts shell.

Problèmes connus

  • Aucun état d’exécution de script : Dans le cas peu probable où un script est reçu sur l’appareil et que l’appareil passe hors connexion avant que l’état d’exécution ne soit signalé, l’appareil ne signale pas l’état d’exécution du script dans le centre d’administration.

Informations supplémentaires

Lorsque vous déployez des scripts shell ou des attributs personnalisés pour des appareils macOS à partir de Microsoft Intune, il déploie la nouvelle version universelle de l’application de l’agent de gestion Intune qui s’exécute en mode natif sur les ordinateurs Mac Apple Silicon. Le même déploiement installera la version x64 de l’application sur les ordinateurs Mac Intel. Rosetta 2 est requis pour exécuter la version x64 (Intel) des applications sur des ordinateurs Mac Apple Silicon. Pour installer Automatiquement Rosetta 2 sur les Mac Apple Silicon, vous pouvez déployer un script shell dans Intune. Pour afficher un exemple de script, consultez Script d’installation de Rosetta 2.

Étapes suivantes