Dans Windows 10, l’exécution de scripts est activée par défaut, offrant ainsi un éventail de possibilités. En revanche, avec Windows 11, Microsoft a adopté une méfiance accrue en désactivant par défaut cette fonctionnalité pour renforcer la sécurité du système. Dans cet article, nous allons vous expliquer comment activer ou désactiver l’exécution de scripts dans PowerShell, que ce soit pour automatiser des tâches et gérer des opérations ou pour éviter d’éventuelles menaces informatiques.

En effet, tout comme PowerShell offre de nombreux avantages pour le travail d’automatisation et de scripting, elle peut également constituer une vulnérabilité potentielle si elle n’est pas correctement gérée.
Au Sommaire
Activer l’exécution de scripts dans PowerShell
Si vous avez essayé d’exécuter un script .ps1 sans succès, vous avez probablement rencontré un message d’erreur similaire à :
Impossible de charger le fichier XXX car l’exécution des scripts est désactivée sur ce système. Pour plus d’informations, consultez le sujet about_Execution_Policies sur https://go.microsoft.com…

Cela se produit car, comme le précise le message, le système a désactivé l’exécution de ces commandes.
Voici comment activer l’exécution de scripts sur PowerShell sous Windows 10/11 :
- Ouvrez PowerShell en tant qu’administrateur.
- Exécutez la commande suivante :
powershell Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Pour vérifier que l’activation a été effectuée, exécutez cette commande :
Get-ExecutionPolicy
Si vous avez correctement effectué cette opération, le message Unrestricted devrait apparaître.

Vous pouvez également exécuter ces autres commandes en fonction de vos besoins spécifiques :
- Pour exécuter des scripts locaux sans signature et des scripts distants signés :
Set-ExecutionPolicy RemoteSigned
- Pour enlever toutes les restrictions sur l’exécution de scripts :
Set-ExecutionPolicy Unrestricted
Confirmez le changement de politique lorsque vous y êtes invité : O pour Oui. N pour Non.

Désactiver l’exécution de scripts dans PowerShell
Désactiver l’exécution de scripts peut être une mesure nécessaire pour protéger des systèmes qui n’ont pas besoin d’exécuter régulièrement des scripts ou qui sont situés dans des environnements sensibles.
Suivez ces étapes pour désactiver l’exécution de scripts :
- Ouvrez PowerShell en tant qu’administrateur.
- Exécutez la commande suivante :
powershell Set-ExecutionPolicy -ExecutionPolicy Restricted
Pour vérifier que la désactivation a été effectuée, exécutez :
Get-ExecutionPolicy
Si tout s’est bien passé, le message Restricted devrait apparaître.

Sachez que vous pouvez toujours revenir sur une politique Restricted à une politique Unrestricted, ou vice-versa, à tout moment.
La sécurité dans PowerShell
PowerShell est un outil puissant conçu pour automatiser des tâches et gérer des configurations via des scripts. Cependant, sa puissance en fait une cible attrayante pour les hackers.
Des scripts malveillants PowerShell peuvent être utilisés pour installer des logiciels malveillants ou des ransomwares, modifier les paramètres du système ou exfiltrer des données à l’insu de l’utilisateur.
Par exemple, un cybercriminel pourrait utiliser un script PowerShell pour télécharger et exécuter un payload de ransomware depuis un serveur distant, chiffrant des fichiers critiques et exigeant une rançon.
Cependant, il existe des situations où l’activation de scripts est indispensable, comme lors de l’exécution de tâches administratives automatisées ou pour l’implémentation de logiciels à grande échelle.
Il est essentiel pour les utilisateurs et les administrateurs de comprendre ces risques et de prendre des mesures proactives pour sécuriser leurs systèmes contre de telles menaces. La gestion des politiques d’exécution des scripts est cruciale dans cette protection, comme nous allons le voir maintenant.
Comprendre les politiques d’exécution dans PowerShell
PowerShell intègre un mécanisme de sécurité connu sous le nom de « politiques d’exécution », conçu pour réguler le niveau de sécurité concernant l’exécution de scripts.
Ces politiques aident à prévenir l’exécution de scripts non autorisés et à protéger les systèmes contre d’éventuelles menaces.
Comprendre et configurer correctement ces politiques est crucial pour maintenir la sécurité et l’efficacité opérationnelle de votre environnement de travail.
Qu’est-ce que les politiques d’exécution ?
Les politiques d’exécution dans PowerShell sont des configurations qui déterminent comment les scripts peuvent être exécutés sur le système. Elles ne limitent pas le chargement ou la modification de scripts dans PowerShell, mais restreignent leur exécution selon divers critères.
Ces politiques sont essentielles pour gérer la sécurité dans des environnements où les scripts peuvent représenter un risque.
Types de politiques d’exécution dans PowerShell
PowerShell définit plusieurs politiques d’exécution, chacune étant adaptée à différents niveaux de sécurité et types d’utilisation :
- Restricted: C’est la configuration par défaut dans de nombreux systèmes. Selon cette politique, aucune exécution de scripts n’est permise ; seuls des commandes individuelles peuvent être exécutées.
- AllSigned: Exige que tous les scripts et fichiers de configuration soient signés par un éditeur de confiance avant de pouvoir être exécutés. Cette politique est idéale pour des environnements nécessitant un niveau élevé de sécurité.
- RemoteSigned: Nécessite une signature numérique uniquement pour les scripts téléchargés depuis Internet. Les scripts locaux peuvent être exécutés sans signature. Cette politique offre un équilibre entre sécurité et flexibilité.
- Unrestricted: Autorise l’exécution de tout script sans aucune restriction. Bien que cette politique offre la plus grande flexibilité, elle expose également le système à davantage de risques d’attaques.
- Bypass: Ignore toutes les politiques d’exécution et exécute tous les scripts sans restrictions. Cette politique ne devrait être utilisée que dans des conditions contrôlées par des utilisateurs ayant une bonne compréhension des risques associés.
- Default: PowerShell utilise la politique configurée comme par défaut sur le système, qui est souvent Restricted, mais peut varier selon la configuration.
Domaines des politiques d’exécution de PowerShell
Les politiques d’exécution dans PowerShell peuvent être configurées à différents niveaux, permettant ainsi une gestion détaillée et granulaire de la manière dont et par qui les scripts peuvent être exécutés sur un système.
Chaque domaine a son propre niveau de priorité et s’applique dans un contexte spécifique.
- MachinePolicy: Applique une politique d’exécution pour tous les utilisateurs et processus sur une machine, configurée via des stratégies de groupe. Cela affecte l’ensemble du système.
- UserPolicy: Établit une politique d’exécution spécifique à un utilisateur, également configurée via des stratégies de groupe, affectant seulement cet utilisateur.
- Process: Définit la politique d’exécution pour le processus actuel de PowerShell. Cette configuration est temporaire et n’affecte que la session en cours.
- CurrentUser: Applique une politique d’exécution à toutes les sessions PowerShell ouvertes par l’utilisateur actuel, sans affecter les autres utilisateurs sur la même machine.
- LocalMachine: Configure la politique d’exécution pour toutes les sessions PowerShell sur une machine spécifique, applicable à tous les utilisateurs utilisant cette machine.
Comment configurer les politiques d’exécution
Configurer la politique d’exécution adéquate est essentiel pour protéger votre système tout en exploitant les capacités d’automatisation de PowerShell.
Pour modifier la politique d’exécution, vous pouvez utiliser la cmdlet Set-ExecutionPolicy. Voici comment procéder :
- Ouvrez PowerShell en tant qu’administrateur.
- Pour établir une politique, utilisez la commande : Set-ExecutionPolicy [Politique], où [Politique] est le nom de la politique que vous souhaitez appliquer.
- PowerShell vous demandera de confirmer le changement de politique, surtout si vous réduisez les restrictions de sécurité.

Consulter la politique d’exécution actuelle
La commande Get-ExecutionPolicy est utilisée pour consulter la politique d’exécution actuelle dans l’environnement PowerShell dans lequel vous travaillez. Cette commande renvoie la politique qui contrôle effectivement l’exécution des scripts dans votre session actuelle.
Exemple d’utilisation :
- Ouvrez PowerShell.
- Entrez la commande Get-ExecutionPolicy et appuyez sur Entrée.
- PowerShell vous affichera la politique d’exécution actuelle, comme Restricted, AllSigned, RemoteSigned, Unrestricted, Bypass, ou Undefined.
Cette commande est particulièrement utile si vous vous trouvez dans un environnement où les politiques d’exécution ont pu être configurées par d’autres administrateurs ou par des politiques de groupe dans une organisation.

De plus, la commande Get-ExecutionPolicy -List fournit une vue plus détaillée de toutes les politiques d’exécution configurées à différents niveaux dans le système. Cette commande est extrêmement utile pour diagnostiquer des comportements inattendus liés à l’exécution de scripts.
Exemple d’utilisation :
- Ouvrez PowerShell en tant qu’administrateur pour vous assurer que vous avez accès à toutes les informations nécessaires.
- Entrez la commande Get-ExecutionPolicy -List et appuyez sur Entrée.
- Vous obtiendrez une liste des politiques d’exécution pour chaque domaine possible, comme MachinePolicy, UserPolicy, Process, CurrentUser, et LocalMachine.

Cette liste détaille les politiques applicables dans différents niveaux ou « scopes ». Vous pouvez ainsi voir si une politique plus restrictive a été imposée sur un domaine spécifique, ce qui pourrait écraser des configurations moins restrictives dans d’autres domaines.
Considérations importantes
- Ordre de priorité : PowerShell applique la politique d’exécution la plus restrictive disponible selon l’ordre de priorité des domaines. Par exemple, si la MachinePolicy est configurée comme Restricted, elle prévaudra sur toute autre politique moins restrictive dans d’autres domaines.
- Sécurité : Vérifiez toujours les politiques d’exécution avant d’exécuter des scripts inconnus ou téléchargés, notamment dans des environnements de production ou critiques.
- Gestion des modifications : Lorsque vous travaillez dans des environnements d’entreprise ou d’équipe, gardez à l’esprit que les changements dans les politiques d’exécution peuvent affecter d’autres utilisateurs et systèmes au sein du même réseau.
Avec ces commandes, vous pouvez vous assurer que la configuration de la politique d’exécution de PowerShell sur votre système est appropriée pour vos besoins de sécurité et opérationnels, tout en fournissant un équilibre entre protection et fonctionnalité.
Conseils et recommandations finales
Dans un contexte où l’utilisation régulière de scripts PowerShell n’est pas requise, ou dans des situations où la sécurité est primordiale, la meilleure pratique est de maintenir l’exécution des scripts désactivée : Restricted.
Cette stratégie minimise les risques de sécurité en empêchant l’exécution accidentelle ou malveillante de scripts non autorisés. Vous pouvez également choisir de permettre temporairement l’exécution de scripts lorsque nécessaire et de désactiver immédiatement après pour maintenir un environnement contrôlé et sécurisé.
Restez toujours conscient des implications de sécurité lors de la modification des politiques d’exécution des scripts. Assurez-vous de comprendre la fonction et l’origine de tout script avant de l’exécuter, et suivez toujours le principe du « moindre privilège », en employant la configuration de politique la plus restrictive qui permette de réaliser le travail nécessaire.
FAQ – Questions Fréquemment Posées
1. Qu’est-ce que PowerShell ?
PowerShell est un cadre de configuration et de gestion de systèmes développé par Microsoft, conçu pour automatiser les tâches utilisant des scripts.
2. Pourquoi dois-je désactiver l’exécution de scripts ?
La désactivation de l’exécution des scripts peut réduire les risques de sécurité, notamment dans les environnements sensibles où l’exécution de scripts non vérifiés peut causer des dommages.
3. Comment puis-je vérifier ma politique d’exécution actuelle ?
Vous pouvez utiliser la commande Get-ExecutionPolicy dans PowerShell pour connaître votre politique d’exécution actuelle.
4. Quelles sont les différentes politiques d’exécution ?
Les politiques d’exécution incluent Restricted, AllSigned, RemoteSigned, Unrestricted, et Bypass, chacune offrant un niveau de sécurité différent.
5. Que faire si j’ai des problèmes avec l’exécution de scripts ?
Si vous rencontrez des problèmes, vérifiez votre politique d’exécution et assurez-vous qu’elle est configurée pour permettre l’exécution de scripts selon vos besoins.