Partage via


Utiliser des scripts PowerShell sur des appareils Windows 10/11 dans Intune

Utiliser l’extension de gestion Microsoft Intune pour charger des scripts PowerShell dans Intune. Ensuite, exécutez ces scripts sur des appareils Windows 10. L’extension de gestion améliore la gestion des périphériques GPM Windows et facilite le déplacement vers une gestion moderne.

Remarque

Pour plus d’informations sur l’extension de gestion Intune pour Windows, consultez extension de gestion Intune pour Windows.

Avant de commencer

  • Lorsque les scripts sont définies sur le contexte de l’utilisateur et que l’utilisateur final a des droits d’administrateur, par défaut, le script PowerShell s’exécute sous le privilège d’administrateur.

  • Les utilisateurs finaux ne sont pas obligés d’être connectés à l’appareil pour exécuter des scripts PowerShell.

  • L’extension de gestion Intune vérifie après chaque redémarrage les nouveaux scripts ou modifications. Une fois que vous avez affecté la stratégie aux groupes Microsoft Entra, le script PowerShell s’exécute et les résultats de l’exécution sont signalés. Une fois que le script s’exécute, il ne se ré-exécute pas sauf si une modification est apportée au script ou à la stratégie. En cas d’échec du script, l’extension de gestion Intune retente le script trois fois pour les trois case activée d’extension de gestion Intune suivantes consécutives.

  • Un script PowerShell affecté à l’appareil s’exécute pour chaque nouvel utilisateur qui se connecte, à l’exception des références SKU multisession où le case activée utilisateur est désactivé.

  • Les scripts PowerShell sont exécutés avant l’exécution des applications Win32. Autrement dit, les scripts PowerShell s’exécutent en premier. Ensuite, les applications Win32 s’exécutent.

  • Les scripts PowerShell expirent au bout de 30 minutes.

Importante

Les meilleures pratiques pour la sensibilisation à la confidentialité lors de l’utilisation de scripts PowerShell et de scripts de correction sont les suivantes :

  • N’incluez aucun type d’informations sensibles dans les scripts (tels que les mots de passe)
  • N’incluez pas d’informations d’identification personnelle (PII) dans les scripts
  • N’utilisez pas de scripts pour collecter des informations d’identification personnelle à partir d’appareils
  • Toujours suivre les meilleures pratiques en matière de confidentialité

Pour plus d’informations, consultez Corrections.

Configuration requise

  • Intune’extension de gestion s’installe automatiquement lorsqu’une application de script PowerShell est affectée à l’utilisateur ou à l’appareil. Pour plus d’informations, consultez extension de gestion Intune pour Windows.

Importante

Les scripts déployés sur les clients exécutant l’extension de gestion Intune ne peuvent pas s’exécuter si l’horloge système de l’appareil n’est pas à l’heure de plusieurs mois ou années. Une fois l’horloge système à l’heure, le script s’exécute comme attendu.

Créer une stratégie de script et l’affecter

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

  2. Sélectionnez Appareils>Scripts et correctionsScripts de plateforme>Ajouter>Windows 10 et versions ultérieures>.

    Capture d’écran montrant la création d’un script pour un appareil Windows 10.

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

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

    • Emplacement du script: naviguer vers le script PowerShell. La taille du script doit être inférieure à 200 Ko (ASCII).

    • Exécutez ce script à l’aide des informations d’identification de connexion : sélectionnez Oui (par défaut) pour exécuter le script avec les informations d’identification de l’utilisateur sur l’appareil. Choisissez Non pour exécuter le script dans le contexte système. De nombreux administrateurs choisissent Oui. Si le script doit s’exécuter dans le contexte système, choisir Non.

    • Appliquer la signature de script case activée : sélectionnez Oui (par défaut) si le script doit être signé par un éditeur approuvé. Sélectionnez Non si vous n’avez pas besoin que le script soit signé.

    • Exécuter le script dans un hôte PowerShell 64 bits: sélectionner Oui pour exécuter le script dans un hôte PowerShell 64 bits sur une architecture cliente 64 bits. Sélectionner Non (valeur par défaut) pour exécuter le script dans un hôte PowerShell 32 bits.

      Quand vous choisissez Oui ou Non, utiliser le tableau suivant pour connaître le comportement nouveau et existant de la stratégie :

      Exécuter le script dans un hôte 64 bits Architecture cliente Nouveau script Script de la stratégie existante
      Non 32 bits Hôte PowerShell 32 bits pris en charge S’exécute uniquement sur un hôte PowerShell 32 bits qui fonctionne sur les architectures 32 bits et 64 bits.
      Oui 64 bits Exécute le script dans un hôte PowerShell 64 bits pour les architectures 64 bits. Exécuté sur 32 bits, le script s’exécute sur un hôte PowerShell 32 bits. Exécutez le script sur un hôte PowerShell 32 bits. Si ce paramètre passe à 64 bits, le script s’ouvre (il ne s’exécute pas) sur un hôte PowerShell 64 bits, puis signale les résultats. Exécuté sur 32 bits, le script s’exécute sur un hôte PowerShell 32 bits.
  5. Sélectionner Balises d’étendue. Les balises d’étendue sont facultatives. Utiliser le contrôle d’accès en fonction du rôle (RBAC) et les balises d’étendue pour l’informatique distribuée contient plus d’informations.

    Pour ajouter une balise d’étendue :

    • Choisissez Sélectionner des balises> d’étendue sélectionnez une balise d’étendue existante dans la liste >Sélectionner.

    • Quand vous avez terminé, sélectionner Suivant.

  6. Sélectionnez Affectations>Sélectionner les groupes à inclure. Une liste existante de groupes Microsoft Entra s’affiche.

    • Sélectionner un ou plusieurs groupes contenant les utilisateurs dont les appareils reçoivent le script. Choisir Sélectionner. Les groupes que vous avez choisis apparaissent dans la liste ; ils recevront votre stratégie.

      Remarque

      Les scripts PowerShell dans Intune peuvent être ciblés sur des groupes de sécurité d’appareil Microsoft Entra ou des groupes de sécurité d’utilisateurs Microsoft Entra. Toutefois, lorsque vous ciblez des appareils joints à l’espace de travail (WPJ), seuls Microsoft Entra groupes de sécurité d’appareil peuvent être utilisés (le ciblage utilisateur sera ignoré).

    • Sélectionnez Suivant.

      Affecter ou déployer un script PowerShell dans des groupes d’appareils dans Microsoft Intune

  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. Quand vous sélectionnez Ajouter, la stratégie est déployée sur les groupes que vous avez choisis.

Scénario - Échec de l’exécution du script

8 h

  • Archivage
  • Exécuter le script ConfigScript01
  • Échec du script

9h

  • Archivage
  • Exécuter le script ConfigScript01
  • Échec du script (nombre de nouvelles tentatives = 1)

10h

  • Archivage
  • Exécuter le script ConfigScript01
  • Échec du script (nombre de nouvelles tentatives = 2)

11h

  • Archivage
  • Exécuter le script ConfigScript01
  • Échec du script (nombre de nouvelles tentatives = 3)

12h

  • Archivage
  • Aucune tentative supplémentaire n’est effectuée pour exécuter le script ConfigScript01.
  • Si aucune modification supplémentaire n’est apportée au script, aucune autre tentative n’est effectuée pour l’exécuter.

Superviser l’état de l’exécution

Vous pouvez surveiller l’état de l’exécution des scripts PowerShell pour les utilisateurs et les appareils dans le portail.

Dans Scripts PowerShell, sélectionner le script à surveiller, choisir Surveiller, puis choisir l’un des rapports suivants :

  • État de l’appareil
  • État de l’utilisateur

Supprimer un script

Dans Scripts PowerShell, cliquer avec le bouton droit sur le script, puis sélectionner Supprimer.

Problèmes courants et leur résolution

Problème: les scripts PowerShell ne s’exécutent pas

Solutions possibles:

  • Les scripts PowerShell ne s’exécutent pas à chaque connexion. Ils s’exécutent :

    • Quand le script est affecté à un appareil

    • Si vous modifiez le script, chargez-le et affectez-le à un utilisateur ou à un appareil

      Conseil

      L’extension de gestion Microsoft Intune est un service qui s’exécute sur l’appareil, tout comme n’importe quel autre service listé dans l’application Services (services.msc). Après le redémarrage d’un appareil, ce service peut également redémarrer et rechercher des scripts PowerShell affectés avec le service Intune. Si le service Extension de gestion Microsoft Intune est défini sur Manuel, le service ne peut pas redémarrer après un redémarrage de l’appareil.

  • Assurez-vous que les appareils sont joints à Microsoft Entra ID. Les appareils qui ne sont joints qu’à votre espace de travail ou organization (inscrits dans Microsoft Entra ID) ne recevront pas les scripts.

  • Vérifier que l’extension de gestion Intune a été téléchargée à l’emplacement suivant %ProgramFiles(x86)%\Microsoft Intune Management Extension.

  • Les scripts ne s’exécutent pas sur les appareils Surface Hub ou Windows 10 en mode S.

  • Examiner les éventuelles erreurs dans les journaux. Consultez Journaux de l’extension de gestion Intune (dans cet article).

  • En cas de problème lié aux autorisations, vérifier que les propriétés du script PowerShell sont bien définies sur Run this script using the logged on credentials. Vérifier également que l’utilisateur connecté dispose des autorisations nécessaires pour exécuter le script.

  • Pour isoler les problèmes des scripts, procédez comme suit :

    • Examiner la configuration de l’exécution de PowerShell sur vos appareils. Pour obtenir de l’aide, consultez Stratégie d’exécution de PowerShell.

    • Exécutez un exemple de script en utilisant l’extension de gestion Intune. Par exemple, créer le répertoire C:\Scripts et accorder à tout le monde un contrôle complet. Exécutez le script suivant :

      write-output "Script worked" | out-file c:\Scripts\output.txt
      

      Si cela réussit, le fichier output.txt doit être créé et doit inclure le texte « Script worked » (Le script a fonctionné).

    • Pour tester l’exécution des scripts sans Intune, exécuter les scripts localement dans le compte système avec l’outil psexec :

      psexec -i -s

    • Si le script signale qu’il a réussi, mais qu’il n’a pas réussi, il est possible que votre service antivirus place AgentExecutor dans le bac à sable (sandbox). Le script suivant signale toujours une défaillance dans Intune. En guise de test, vous pouvez utiliser ce script :

      Write-Error -Message "Forced Fail" -Category OperationStopped
      mkdir "c:\temp" 
      echo "Forced Fail" | out-file c:\temp\Fail.txt
      

      Si le script signale une réussite, examinez AgentExecutor.log pour confirmer la sortie de l’erreur. Si le script s’exécute, la longueur doit être >de 2.

    • Pour capturer les fichiers .error et .output, l’extrait de code suivant exécute le script via AgentExecutor sur PowerShell x86 (C:\Windows\SysWOW64\WindowsPowerShell\v1.0). Il conserve les journaux pour que vous puissiez les vérifier. N’oubliez pas que l’extension de gestion Intune nettoie les journaux après l’exécution du script :

      $scriptPath = read-host "Enter the path to the script file to execute"
      $logFolder = read-host "Enter the path to a folder to output the logs to"
      $outputPath = $logFolder+"\output.output"
      $errorPath =  $logFolder+"\error.error"
      $timeoutPath =  $logFolder+"\timeout.timeout"
      $timeoutVal = 60000 
      $PSFolder = "C:\Windows\SysWOW64\WindowsPowerShell\v1.0"
      $AgentExec = "C:\Program Files (x86)\Microsoft Intune Management Extension\agentexecutor.exe"
      &$AgentExec -powershell  $scriptPath $outputPath $errorPath $timeoutPath $timeoutVal $PSFolder 0 0
      

Problème : Pourquoi les scripts sont-ils en cours d’exécution même si Windows n’est plus géré ?

Lorsqu’un appareil Windows avec des scripts attribués n’est plus géré, l’IME n’est pas supprimé immédiatement. L’IME détecte que Windows n’est pas géré au prochain case activée-in IME (généralement toutes les 8 heures) et annule les exécutions de script. En attendant, tous les scripts stockés localement peuvent s’exécuter. Lorsque l’IME ne parvient pas à case activée, il effectue une nouvelle tentative d’archivage pendant 24 heures (temps d’éveil de l’appareil), puis se retire de l’appareil Windows.

Prochaines étapes

Supervisez et dépannez vos profils.