Aller au contenu
tricknfixGAMING · TECHNOLOGIE · INFORMATIQUE
Créer
#logiciels-applications·Question ouverteTutorial

« L'exécution de scripts est désactivée » dans PowerShell : causes et solutions

0 réponse
Tutorial

Vous lancez un script PowerShell (fichier .ps1) fourni par un tutoriel, un logiciel ou votre propre travail, et Windows PowerShell refuse de le charger ? Ce blocage vient de la stratégie d'exécution de PowerShell, un réglage de sécurité qui décide si les scripts peuvent s'exécuter et s'ils doivent être signés. Ce guide explique comment lire ce réglage, l'assouplir au plus petit niveau nécessaire et revenir en arrière, d'après la documentation de Microsoft.

Microsoft précise que la stratégie d'exécution n'est pas une frontière de sécurité : elle évite surtout d'exécuter un script par mégarde. Avant de modifier quoi que ce soit, assurez-vous que le script provient d'une source de confiance et lisez son contenu si vous le pouvez.

Problème

  • Un script .ps1 refuse de démarrer dans Windows PowerShell avec un message en rouge.
  • Les commandes tapées une à une fonctionnent, mais aucun script ne se lance.
  • Un script téléchargé sur Internet est refusé, alors que vos propres scripts fonctionnent.
  • Le réglage proposé par un tutoriel (Set-ExecutionPolicy) échoue ou ne change rien.

Message typique (le chemin varie selon votre script) :

Texte brut3 lignes

Impossible de charger le fichier C:\Scripts\exemple.ps1, car l'exécution de scripts est désactivée sur ce système. Pour plus d'informations, consultez about_Execution_Policies à l'adresse https://go.microsoft.com/fwlink/?LinkID=135170.

Observer avant d'agir

ObservationHypothèse la plus probableÉtape
« l'exécution de scripts est désactivée sur ce système »Stratégie Restricted, valeur par défaut des versions clientes de Windows dans Windows PowerShellÉtapes 1 à 3
Message indiquant que le fichier n'est pas signé numériquementStratégie RemoteSigned et script marqué comme téléchargé depuis InternetÉtape 4
Set-ExecutionPolicy indique que le réglage est défini par une stratégie de groupe, ou la valeur effective ne change pasRéglage imposé par une stratégie de groupe (PC d'entreprise ou d'école)Étape 5
Le script fonctionne dans PowerShell 7 mais pas dans Windows PowerShell (ou l'inverse)Valeurs par défaut différentes selon la versionÉtape 1 dans chaque console

Étape 1 : lire la stratégie d'exécution actuelle

Quand l'utiliser : toujours, avant de changer un réglage. Cette commande ne modifie rien.

Solution proposée

  1. Ouvrez Windows PowerShell (pas besoin de droits administrateur).
  2. Tapez :
PowerShell3 lignes

Get-ExecutionPolicy -List
  1. Lisez les cinq lignes, de la plus prioritaire à la moins prioritaire :
Portée (Scope)Origine du réglage
MachinePolicyStratégie de groupe pour tous les utilisateurs du PC
UserPolicyStratégie de groupe pour l'utilisateur actuel
ProcessSession PowerShell en cours uniquement
CurrentUserVotre compte uniquement
LocalMachineTous les utilisateurs du PC

Résultat attendu : si toutes les lignes indiquent Undefined, la stratégie effective est Restricted sur une version cliente de Windows : aucun script ne s'exécute. Si MachinePolicy ou UserPolicy affiche une valeur, passez directement à l'étape 5.

Étape 2 : autoriser les scripts uniquement dans la fenêtre ouverte

Quand l'utiliser : vous devez lancer un script de confiance une seule fois, sans modifier durablement le PC.

Solution proposée

  1. Dans la fenêtre Windows PowerShell où vous lancerez le script, tapez :
PowerShell3 lignes

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
  1. Confirmez la modification si PowerShell vous le demande.
  2. Lancez votre script dans cette même fenêtre.

Résultat attendu : le script s'exécute. Le réglage est conservé seulement en mémoire : il disparaît à la fermeture de la fenêtre, il n'y a donc rien à annuler.

Étape 3 : autoriser vos scripts locaux pour votre compte

Quand l'utiliser : vous utilisez régulièrement des scripts que vous avez écrits ou copiés vous-même sur le PC.

La valeur RemoteSigned autorise les scripts créés sur le PC, mais exige une signature numérique (ou un déblocage, voir l'étape 4) pour les scripts téléchargés depuis Internet, y compris par e-mail ou messagerie instantanée. C'est un compromis plus prudent que Unrestricted ou Bypass, qui laissent passer tous les scripts.

Solution proposée

  1. Dans Windows PowerShell, tapez la commande suivante. La portée CurrentUser ne concerne que votre compte et ne demande pas de droits administrateur :
PowerShell3 lignes

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  1. Confirmez la modification si PowerShell vous le demande. Selon Microsoft, le changement est immédiat : inutile de redémarrer PowerShell.
  2. Vérifiez avec Get-ExecutionPolicy -List que la ligne CurrentUser affiche RemoteSigned.

Résultat attendu : vos scripts locaux se lancent, y compris dans les nouvelles fenêtres PowerShell.

Retour arrière : pour retirer ce réglage et revenir au comportement par défaut, tapez :

PowerShell3 lignes

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

Pour appliquer le réglage à tous les utilisateurs du PC, la portée est LocalMachine : Microsoft indique qu'il faut alors lancer PowerShell avec Exécuter en tant qu'administrateur. Notez qu'un réglage CurrentUser est prioritaire sur LocalMachine.

Étape 4 : débloquer un script téléchargé

Quand l'utiliser : la stratégie est déjà RemoteSigned, mais un script téléchargé est refusé car il n'est pas signé.

Windows marque les fichiers téléchargés avec un flux de données nommé Zone.Identifier. Avec RemoteSigned, PowerShell refuse les scripts non signés portant cette marque. La commande Unblock-File retire cette marque : Microsoft recommande de vérifier le fichier et sa source avant de l'utiliser.

Solution proposée

  1. Vérifiez que le script vient bien de l'éditeur ou du site attendu, puis ouvrez-le dans un éditeur de texte pour en lire le contenu.
  2. Pour confirmer qu'il est marqué comme téléchargé, tapez (en adaptant le chemin) :
PowerShell3 lignes

Get-Item "C:\Scripts\exemple.ps1" -Stream Zone.Identifier
  1. Si un flux Zone.Identifier est affiché et que vous faites confiance au script, débloquez-le :
PowerShell3 lignes

Unblock-File -Path "C:\Scripts\exemple.ps1"

Résultat attendu : le script se lance normalement. Ne débloquez pas en masse un dossier entier de fichiers que vous n'avez pas vérifiés.

Étape 5 : réglage imposé par une stratégie de groupe

Quand l'utiliser : l'étape 1 montre une valeur dans MachinePolicy ou UserPolicy, ou Set-ExecutionPolicy indique que la portée est définie par une stratégie de groupe.

D'après Microsoft, le paramètre de stratégie de groupe Activer l'exécution des scripts (Turn on Script Execution) l'emporte sur les réglages faits dans PowerShell, à toutes les portées, y compris la portée Process. Désactivé, il empêche tout script de s'exécuter.

Solution proposée

  1. PC professionnel ou scolaire : ce réglage est voulu par votre organisation. Ne tentez pas de le contourner : contactez votre service informatique avec le nom du script et son usage.
  2. PC personnel sous Windows Pro : si vous avez vous-même configuré ce paramètre, il se trouve dans l'Éditeur de stratégie de groupe locale (gpedit.msc), sous Configuration ordinateur ou Configuration utilisateur, puis Modèles d'administration > Composants Windows > Windows PowerShell. Le paramètre « Non configuré » rend la main aux réglages de PowerShell.

Résultat attendu : après modification de la stratégie par la personne habilitée, Get-ExecutionPolicy -List n'affiche plus de valeur imposée et les étapes 2 à 4 s'appliquent.

Cas particuliers

SituationQue faire
PowerShell 7 et Windows PowerShell se comportent différemmentLes deux sont des programmes distincts : la documentation de PowerShell 7 indique RemoteSigned comme valeur par défaut sur Windows. Lancez Get-ExecutionPolicy -List dans chaque console.
Un tutoriel conseille Unrestricted ou Bypass de façon permanentePréférez RemoteSigned pour votre compte (étape 3) : Microsoft signale le risque d'exécuter des scripts malveillants avec Unrestricted, et Bypass ne bloque rien.
Le programme est bloqué par une autre protection de WindowsVoir Application bloquée par le Contrôle intelligent des applications sous Windows 11 ou Fichier bloqué à tort par Microsoft Defender.

Vérification finale

  • ☐ Get-ExecutionPolicy -List affiche la valeur attendue à la bonne portée.
  • ☐ Le script de confiance se lance sans message rouge.
  • ☐ Aucune stratégie Unrestricted ou Bypass n'a été laissée en place inutilement.
  • ☐ Vous savez annuler le réglage avec la valeur Undefined.

Sources

Le problème continue ?

Répondez dans ce sujet en indiquant votre version de Windows (touches Windows + R, puis winver), la console utilisée (Windows PowerShell ou PowerShell 7), le résultat complet de Get-ExecutionPolicy -List, le message d'erreur exact et l'origine du script (écrit par vous, téléchargé, fourni par un logiciel). Ne publiez pas le contenu d'un script s'il contient des mots de passe, des clés ou des adresses internes.

Une idée, une piste ?

Soyez la première personne à rejoindre la discussion.

Répondre

Répondez sans inscription avec un pseudo TNF_… conservé sur cet appareil. Avant validation de l’e-mail : une publication toutes les 30 minutes.

Ajouter un GIF

Jusqu’à 5 GIF par message.

Votre brouillon reste sur cet appareil pendant la rédaction.