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 macOS>>Shell 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 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.

    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 shell met également à jour les affectations pour Microsoft Intune’agent MDM 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’exécution status 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>Status de l’appareil
  • Scripts>sélectionner le script à surveiller>Status de l’utilisateur

Importante

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

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

  • Une exécution de script status échec indique que le script a retourné un code de sortie différent de zéro ou que le script est mal formé.
  • Une exécution de script status de réussite a indiqué 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>Scripts et sélectionnez un script d’interpréteur de commandes macOS.

  3. Dans Rapport status d’appareil ou Status 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. Cette case activée 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 de Microsoft Intune centre d’administration.
    • 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>macOS>Attributs> personnalisésAjouter.

  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.

    Informations 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 les status 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>Status de l’appareil
  • Attributs> personnaliséssélectionner le profil d’attribut personnalisé à surveiller>Status 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 :

  • Une status de Failed 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 status 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 .

Forum 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 d’case activée pour recevoir des scripts nouveaux ou mis à jour. Ce processus de case activée se produit toutes les 8 heures et est différent de l’case activée mdm. Assurez-vous que l’appareil est en éveil et connecté à un réseau pour qu’un agent case activée et attendez que l’agent case activée. 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 est la fréquence d’exécution du script status signalée ?

L’exécution du script status est signalée à Microsoft Intune centre d’administration 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 signale uniquement status 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 exécuté status 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

  • Aucune exécution de script status : dans le cas peu probable où un script est reçu sur l’appareil et que l’appareil passe hors connexion avant que l’exécution status soit signalée, l’appareil ne signale pas l’exécution status pour le 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