Anavem
Languageen
Comment résoudre l'erreur PowerShell 'L'exécution de scripts est désactivée sur ce système'

Comment résoudre l'erreur PowerShell 'L'exécution de scripts est désactivée sur ce système'

Résolvez les erreurs de stratégie d'exécution PowerShell en vérifiant les stratégies actuelles, en définissant la stratégie RemoteSigned et en mettant en œuvre les meilleures pratiques de sécurité pour l'exécution de scripts.

9 avril 2026 12 min
mediumpowershell 8 étapes 12 min

Pourquoi PowerShell bloque-t-il l'exécution des scripts par défaut ?

L'erreur "l'exécution des scripts est désactivée sur ce système" de PowerShell se produit parce que Microsoft définit la politique d'exécution par défaut sur Restricted pour des raisons de sécurité. Cela empêche les scripts malveillants de s'exécuter automatiquement et protège les utilisateurs contre le code potentiellement nuisible téléchargé depuis Internet ou reçu par e-mail.

Le système de politique d'exécution utilise plusieurs portées - des paramètres de stratégie de groupe que les administrateurs contrôlent jusqu'aux préférences des utilisateurs individuels. Comprendre ces portées est crucial car elles se remplacent mutuellement dans une hiérarchie spécifique, et simplement changer un paramètre pourrait ne pas résoudre votre problème si une politique de priorité supérieure est en place.

Quelles sont les différentes politiques d'exécution de PowerShell ?

PowerShell propose plusieurs niveaux de politique d'exécution, chacun équilibrant la sécurité avec la fonctionnalité. RemoteSigned est le juste milieu pour la plupart des utilisateurs - il permet aux scripts créés localement de s'exécuter librement tout en exigeant des signatures numériques pour les scripts téléchargés à partir de sources externes. Cette politique empêche les attaques par script tout en maintenant la productivité pour le travail de développement légitime.

Le système de politique fonctionne à la fois sur Windows PowerShell 5.1 (intégré à Windows) et sur le nouveau PowerShell 7.x multiplateforme. Si vous avez les deux versions installées, vous devrez configurer les politiques séparément pour chacune, car elles maintiennent des paramètres indépendants.

Quand devriez-vous modifier les politiques d'exécution ?

Vous rencontrerez cette erreur lors de l'exécution de scripts PowerShell pour l'automatisation, l'administration système ou les tâches de développement. Les scénarios courants incluent l'exécution de scripts de déploiement, d'outils de gestion de configuration ou de solutions d'automatisation personnalisées. L'essentiel est de choisir la bonne approche - des correctifs temporaires pour des besoins ponctuels, des modifications spécifiques à l'utilisateur pour les développeurs individuels, ou des politiques à l'échelle du système pour les environnements gérés.

Guide de mise en oeuvre

Procédure complète

01

Vérifier les paramètres actuels de la stratégie d'exécution

Avant de faire des modifications, vous devez comprendre la configuration actuelle de votre politique d'exécution PowerShell. PowerShell utilise plusieurs portées qui peuvent se remplacer mutuellement.

Ouvrez PowerShell en tant qu'administrateur en cliquant avec le bouton droit sur le bouton Démarrer et en sélectionnant "Windows PowerShell (Admin)" ou "Terminal (Admin)" sur Windows 11. Exécutez cette commande pour voir toutes les portées de politique :

Get-ExecutionPolicy -List

Cela affiche cinq portées par ordre de priorité :

  • MachinePolicy : Défini par la stratégie de groupe (priorité la plus élevée)
  • UserPolicy : Défini par la stratégie de groupe pour l'utilisateur actuel
  • Process : Session PowerShell actuelle uniquement
  • CurrentUser : Paramètre du registre pour l'utilisateur actuel
  • LocalMachine : Paramètre du registre pour tous les utilisateurs (par défaut : Restreint)

Vérification : Recherchez "Restreint" dans la portée LocalMachine - c'est ce qui cause l'erreur. Si MachinePolicy ou UserPolicy affichent autre chose que "Indéfini", votre organisation contrôle les politiques via la stratégie de groupe.

Astuce pro : La première politique non "Indéfini" de la liste prend effet. Les paramètres de la stratégie de groupe remplacent toujours les paramètres locaux du registre.
02

Appliquer une solution temporaire pour une seule session

Si vous devez exécuter un script immédiatement sans modifier les paramètres permanents, utilisez un contournement temporaire. Cela est parfait pour tester ou exécuter un script une seule fois.

Pour l'exécution d'un seul script, exécutez :

PowerShell -ExecutionPolicy Bypass -File .\script.ps1

Remplacez script.ps1 par le nom réel de votre script. Alternativement, pour contourner la politique uniquement pour votre session PowerShell actuelle :

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

Cela vous permet d'exécuter plusieurs scripts dans la même session sans modifications permanentes.

Vérification : Exécutez Get-ExecutionPolicy pour confirmer qu'il affiche "Bypass". Ouvrez une nouvelle fenêtre PowerShell et exécutez la même commande - elle devrait afficher à nouveau "Restricted", prouvant que le changement était temporaire.

Avertissement : Bypass désactive toutes les vérifications de sécurité. Utilisez cela uniquement pour des scripts de confiance et fermez la session PowerShell une fois terminé.
03

Définir la stratégie RemoteSigned pour l'utilisateur actuel

La solution permanente recommandée pour les utilisateurs individuels est de définir la politique RemoteSigned pour le scope CurrentUser. Cela permet aux scripts locaux de s'exécuter tout en exigeant des signatures numériques pour les scripts téléchargés.

Exécutez cette commande dans n'importe quelle fenêtre PowerShell (pas besoin de droits d'administrateur) :

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Lorsque vous y êtes invité, tapez Y et appuyez sur Entrée pour confirmer le changement. Cette politique :

  • Permet aux scripts créés localement de s'exécuter sans signatures
  • Exige des signatures numériques pour les scripts téléchargés depuis internet
  • N'affecte que le compte utilisateur actuel
  • Persiste à travers les sessions PowerShell et les redémarrages

Vérification : Exécutez Get-ExecutionPolicy -Scope CurrentUser pour confirmer qu'il affiche "RemoteSigned". Testez en créant un script simple :

echo 'Write-Host "Test successful!"' > test.ps1
.\test.ps1

Le script devrait s'exécuter sans erreurs.

Astuce pro : Le scope CurrentUser est idéal pour les développeurs et les utilisateurs avancés qui ont besoin d'exécuter des scripts sans affecter les autres utilisateurs ou nécessiter des privilèges administratifs.
04

Configurer la politique RemoteSigned à l'échelle du système

Pour les administrateurs système qui doivent activer l'exécution de scripts pour tous les utilisateurs, définissez la portée LocalMachine. Cela nécessite des privilèges d'administrateur.

Ouvrez PowerShell en tant qu'administrateur et exécutez :

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

Confirmez avec Y lorsque vous y êtes invité. Ce changement affecte tous les utilisateurs du système et persiste dans le registre Windows à HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell.

Pour les organisations utilisant à la fois Windows PowerShell 5.1 et PowerShell 7.x, définissez les politiques pour les deux :

# Pour Windows PowerShell 5.1
powershell.exe -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine"

# Pour PowerShell 7.x
pwsh.exe -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine"

Vérification : Exécutez Get-ExecutionPolicy -List pour confirmer que LocalMachine affiche "RemoteSigned". Testez avec un autre compte utilisateur pour vous assurer que la politique s'applique à l'ensemble du système.

Avertissement : Les modifications à l'échelle du système affectent la sécurité de tous les utilisateurs. Envisagez d'utiliser la stratégie de groupe dans les environnements de domaine au lieu de modifications directes du registre.
05

Débloquer les scripts téléchargés

Même avec la politique RemoteSigned, les scripts téléchargés depuis internet peuvent toujours être bloqués en raison des zones de sécurité de Windows. Ces fichiers ont un flux de données alternatif qui les marque comme potentiellement dangereux.

Pour débloquer un fichier script spécifique :

Unblock-File -Path .\downloaded-script.ps1

Pour plusieurs fichiers dans un répertoire :

Get-ChildItem -Path .\Scripts\ -Recurse | Unblock-File

Vous pouvez également vérifier si un fichier est bloqué avant de le débloquer :

Get-Item .\script.ps1 -Stream Zone.Identifier -ErrorAction SilentlyContinue

Si cela renvoie des données, le fichier est marqué comme téléchargé et doit être débloqué.

Vérification : Après le déblocage, la vérification Zone.Identifier ne devrait renvoyer aucun résultat. Essayez d'exécuter le script précédemment bloqué - il devrait s'exécuter sans l'erreur "ne peut pas être chargé car l'exécution des scripts est désactivée".

Astuce pro : Faites un clic droit sur le fichier script dans l'Explorateur Windows et cochez "Débloquer" dans Propriétés comme alternative à la commande PowerShell.
06

Gérer les restrictions de stratégie de groupe

Dans les environnements d'entreprise, la stratégie de groupe peut remplacer les paramètres de stratégie d'exécution locale. Si MachinePolicy ou UserPolicy affichent des valeurs autres que "Undefined", une intervention administrative est nécessaire.

Vérifiez le contrôle de la stratégie de groupe :

Get-ExecutionPolicy -List | Where-Object {$_.Scope -match "Policy" -and $_.ExecutionPolicy -ne "Undefined"}

Si la stratégie de groupe contrôle les stratégies d'exécution, vous avez ces options :

  1. Contactez votre administrateur système pour modifier le paramètre de la stratégie de groupe
  2. Utilisez le contournement de l'étendue du processus pour des besoins temporaires : Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
  3. Demandez une exception de politique pour votre compte utilisateur ou votre ordinateur

Pour les administrateurs gérant la stratégie de groupe :

  1. Ouvrez gpedit.msc (Éditeur de stratégie de groupe locale) ou la console de gestion des stratégies de groupe
  2. Accédez à Configuration de l'ordinateur > Stratégies > Modèles d'administration > Composants Windows > Windows PowerShell
  3. Activez Activer l'exécution de scripts
  4. Sélectionnez Autoriser les scripts locaux et les scripts signés à distance (équivalent à RemoteSigned)

Vérification : Après les modifications de la stratégie de groupe, exécutez gpupdate /force et redémarrez PowerShell. Vérifiez Get-ExecutionPolicy -List pour confirmer que le changement de politique a pris effet.

Avertissement : Les modifications de la stratégie de groupe affectent plusieurs ordinateurs dans le domaine. Testez les modifications de politique dans un environnement contrôlé avant un déploiement à l'échelle du domaine.
07

Mettre en œuvre les meilleures pratiques de sécurité

Tout en activant l'exécution de scripts, maintenez la sécurité en suivant les meilleures pratiques PowerShell. N'utilisez jamais de politiques trop permissives comme Unrestricted ou Bypass pour des paramètres permanents.

Hiérarchie des politiques recommandée :

PolitiqueNiveau de sécuritéCas d'utilisation
RestrictedLe plus élevéPar défaut - aucun script autorisé
AllSignedÉlevéTous les scripts doivent être signés numériquement
RemoteSignedMoyenScripts locaux OK, scripts distants nécessitent des signatures
UnrestrictedFaibleTous les scripts autorisés (non recommandé)
BypassAucunUtilisation temporaire uniquement

Pour les environnements de production, envisagez de signer vos scripts :

# Obtenir un certificat de signature de code (nécessite une autorité de certification)
$cert = Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert

# Signer un script
Set-AuthenticodeSignature -FilePath .\script.ps1 -Certificate $cert

Surveillez les changements de politique d'exécution avec ce script de surveillance du registre :

# Vérifier les clés de registre de la politique d'exécution
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" -Name ExecutionPolicy -ErrorAction SilentlyContinue
Get-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" -Name ExecutionPolicy -ErrorAction SilentlyContinue

Vérification : Auditez régulièrement vos politiques d'exécution avec Get-ExecutionPolicy -List et assurez-vous qu'elles correspondent à vos exigences de sécurité.

Astuce pro : Créez un script de profil PowerShell qui enregistre l'exécution des scripts à des fins d'audit : $profile montre l'emplacement de votre profil.
08

Dépanner les problèmes persistants

Si l'erreur persiste après avoir modifié les politiques d'exécution, plusieurs facteurs peuvent interférer. Voici une approche systématique de dépannage.

Vérifiez les politiques conflictuelles :

# Analyse détaillée des politiques
foreach ($scope in @('MachinePolicy','UserPolicy','Process','CurrentUser','LocalMachine')) {
    $policy = Get-ExecutionPolicy -Scope $scope
    Write-Host "$scope`: $policy"
}

Vérifiez la version et l'édition de PowerShell :

$PSVersionTable

PowerShell 5.1 (Windows PowerShell) et PowerShell 7.x maintiennent des politiques d'exécution séparées. Si vous utilisez PowerShell 7.x, assurez-vous d'avoir défini les politiques pour la version correcte :

# Vérifiez quelle version de PowerShell vous utilisez
if ($PSVersionTable.PSVersion.Major -ge 7) {
    Write-Host "Exécution de PowerShell 7.x (pwsh.exe)"
} else {
    Write-Host "Exécution de Windows PowerShell 5.1 (powershell.exe)"
}

Effacez le cache de PowerShell et redémarrez :

# Effacer le cache des modules PowerShell
Remove-Item -Path "$env:LOCALAPPDATA\Microsoft\Windows\PowerShell\ModuleAnalysisCache" -Force -ErrorAction SilentlyContinue

Ensuite, redémarrez complètement PowerShell (fermez toutes les fenêtres et rouvrez).

Testez avec un script minimal :

# Créer et tester un script simple
'Write-Host "Test de la politique d'exécution réussi"' | Out-File -FilePath test-policy.ps1 -Encoding UTF8
.\test-policy.ps1

Vérification : Le script de test devrait s'exécuter sans erreurs. S'il échoue encore, vérifiez les journaux des événements Windows sous Applications et Services Logs > Microsoft > Windows > PowerShell > Operational pour des informations d'erreur détaillées.

Avertissement : Si aucune de ces étapes ne fonctionne, votre système peut avoir des logiciels de sécurité supplémentaires ou des politiques bloquant l'exécution de PowerShell. Contactez votre administrateur informatique pour les environnements d'entreprise.

Questions Fréquentes

Quelle est la différence entre les étendues de la stratégie d'exécution PowerShell ?+
PowerShell utilise cinq étendues de stratégie d'exécution par ordre de priorité : MachinePolicy (stratégie de groupe pour l'ordinateur), UserPolicy (stratégie de groupe pour l'utilisateur), Process (session en cours uniquement), CurrentUser (paramètre de registre pour l'utilisateur actuel) et LocalMachine (paramètre de registre pour tous les utilisateurs). Les étendues de priorité supérieure remplacent les inférieures, donc les paramètres de stratégie de groupe prennent toujours le pas sur les modifications locales du registre.
Est-il sûr de définir la stratégie d'exécution de PowerShell sur RemoteSigned ?+
Oui, RemoteSigned est la politique recommandée pour la plupart des utilisateurs car elle offre un bon équilibre entre sécurité et fonctionnalité. Elle permet aux scripts créés localement de s'exécuter sans signatures tout en exigeant des signatures numériques pour les scripts téléchargés depuis Internet. Cela empêche la plupart des scénarios de logiciels malveillants tout en permettant un travail d'automatisation et de développement légitime.
Pourquoi ma stratégie d'exécution PowerShell revient-elle constamment à Restreint ?+
Cela se produit généralement lorsque la stratégie de groupe contrôle vos paramètres de stratégie d'exécution. Vérifiez 'Get-ExecutionPolicy -List' pour les entrées MachinePolicy ou UserPolicy qui ne sont pas 'Undefined'. Les paramètres de stratégie de groupe remplacent les modifications locales, vous aurez donc besoin de l'intervention d'un administrateur pour modifier la stratégie de groupe ou utiliser des solutions temporaires comme le contournement de l'étendue du processus.
Dois-je définir la stratégie d'exécution séparément pour PowerShell 5.1 et PowerShell 7 ?+
Oui, Windows PowerShell 5.1 (powershell.exe) et PowerShell 7.x (pwsh.exe) conservent des paramètres de stratégie d'exécution distincts. Si vous utilisez les deux versions, vous devez configurer les stratégies pour chacune indépendamment. Utilisez l'exécutable approprié lors de la configuration des stratégies : powershell.exe pour 5.1 et pwsh.exe pour 7.x.
Comment débloquer les scripts PowerShell téléchargés depuis Internet ?+
Utilisez la cmdlet 'Unblock-File' pour supprimer le flux de données alternatif Zone.Identifier que Windows ajoute aux fichiers téléchargés. Exécutez 'Unblock-File -Path .\script.ps1' pour des fichiers individuels ou 'Get-ChildItem -Recurse | Unblock-File' pour des répertoires entiers. Vous pouvez également faire un clic droit sur le fichier dans l'Explorateur Windows et cocher 'Débloquer' dans la boîte de dialogue Propriétés.

Discussion

Partagez vos réflexions et analyses

Connectez-vous pour participer