Exécution de script désactivée PowerShell : Autoriser l’exécution de script dans PowerShell

malekalmorte

Date création :

15 avril 2020

Dernière modification :

PowerShell vise à remplacer l’invite de commandes.
C’est un environnement beaucoup plus complet que ce dernier.
En effet, vous pouvez administrer entièrement Windows avec PowerShell.

Par défaut, beaucoup de commandes sont disponibles (que l’on nomme Cmdlets).
Il est même possible d’ajouter de nouveaux modules pour étendre encore plus les possibilités.
Toutefois, pour des raisons de sécurité, ces scripts sont interdits à l’exécution et vous pouvez rencontrer le message « l’exécution de scripts est désactivée sur ce système« .

Cet article vous explique comment autoriser l’exécution de scripts dans PowerShell.

Autoriser l'exécution de Scripts dans Powershell

Qu’est-ce que l’exécution de script désactivée sur Powershell

Powershell fonctionne avec des modules.
Pour étendre les fonctionnalités, vous pouvez télécharger des modules sur internet et les importer.
Par exemple, pour installer Chocolatey.

Pour cela, il faut

  • copier le module dans le dossier %WINDIR%\System32\WindowsPowerShell\v1.0\Modules
  • utiliser la commande Import-Module

Par défaut, l’import des modules est internet.
On obtient alors une erreur de sécurité :

Import-Module : Impossible de charger le fichier
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate\PSWindowsUpdate.psm1, car l’exécution de scripts est désactivée sur ce système.

Mais on peut autoriser l’exécution de scripts Powershell.

Quelles sont les politiques d’exécution de script de PowerShell

La stratégie d’exécution de PowerShell est une fonctionnalité de sécurité qui contrôle les conditions dans lesquelles PowerShell charge les fichiers de configuration et exécute les scripts.
Cette fonctionnalité permet d’empêcher l’exécution de scripts malveillants.

Voici les politiques de stratégies d’exécution de scripts possibles :

  • AllSigned
    • Les scripts peuvent s’exécuter.
    • Nécessite que tous les scripts et fichiers de configuration soient signés par un éditeur approuvé, y compris les scripts que vous écrivez sur l’ordinateur local.
    • Vous invite à exécuter des scripts d’éditeurs que vous n’avez pas encore classés comme fiables ou non fiables.
    • Risques liés à l’exécution de scripts signés mais malveillants.
  • Bypass
    • Rien n’est bloqué et il n’y a ni avertissements ni invites.
    • Cette stratégie d’exécution est conçue pour les configurations dans lesquelles un script PowerShell est intégré à une application plus grande ou pour les configurations dans lesquelles PowerShell est la base d’un programme qui possède son propre modèle de sécurité.
  • Défaut
    • Définit la stratégie d’exécution par défaut.
    • Réservé aux clients Windows.
    • RemoteSigned pour les serveurs Windows.
  • RemoteSigned
    •  La stratégie d’exécution par défaut pour les ordinateurs serveurs Windows.
    •  Les scripts peuvent s’exécuter.
    • Nécessite une signature numérique d’un éditeur de confiance sur les scripts et les fichiers de configuration téléchargés sur Internet, qui incluent des programmes de messagerie électronique et de messagerie instantanée.
    • Ne nécessite pas de signatures numériques sur les scripts écrits sur l’ordinateur local et non téléchargés sur Internet.
    • Exécute des scripts téléchargés sur Internet et non signés, si les scripts sont débloqués, par exemple en utilisant l’applet de commande Unblock-File.
    • Risque d’exécuter des scripts non signés à partir de sources autres qu’Internet et des scripts signés qui pourraient être malveillants.
  • Restricted
    • La stratégie d’exécution par défaut pour les ordinateurs clients Windows.
    • Autorise les commandes individuelles, mais n’autorise pas les scripts.
    • Empêche l’exécution de tous les fichiers de script, y compris les fichiers de formatage et de configuration (.ps1xml), les fichiers de script de module (.psm1) et les profils PowerShell (.ps1).
  • Undefined
    • Aucune stratégie d’exécution n’est définie dans la portée actuelle.
    • Si la politique d’exécution dans toutes les étendues n’est pas définie, la politique d’exécution effective est Restreint, qui est la politique d’exécution par défaut.
  • Unrestricted
    • La stratégie d’exécution par défaut pour les ordinateurs non Windows et ne peut pas être modifiée.
    • Des scripts non signés peuvent s’exécuter. Il existe un risque d’exécuter des scripts malveillants.
    • Avertit l’utilisateur avant d’exécuter des scripts et des fichiers de configuration qui ne proviennent pas de la zone intranet locale.

Exécution de script désactivée PowerShell : Comment autoriser l’exécution de scripts Powershell

Pour régler au mieux Powershell, Microsoft prévoit plusieurs niveaux de stratégies d’exécution.

Autoriser les scripts abaissent votre niveau de sécurité car vous autoriser l’exécution de scripts non sûr.
Un malware sous la forme d’un script Powershell peut alors s’exécuter sur votre PC.

Comment changer la politique de stratégie d’exécution

La commande Powershell Set-ExecutionPolicy permet de définir la politique.

Set-ExecutionPolicy Unrestricted
Bravo ! vous avez réussi à autoriser l’exécution de scripts.

Ci-dessous l’import d’un nouveau module retourne une erreur lorsque la politique est en Restricted.
La passer en Unrestricted permet d’importer le module.

Exécution script désactivée PowerShell : Comment autoriser l'exécution de scripts Powershell

Ici c’est le niveau de politique et de sécurité le plus faible.
Il n’est pas conseillé de laisser ce niveau de sécurité.
Choisissez le niveau de sécurité le plus fort.
A partir de là, le message l’exécution de scripts est désactivée sur ce système disparait.

Exécuter un script PowerShell spécifique

Vous pouvez aussi exécuter un script spécifique en indiquant la politique d’exécution à l’aide de l’option -ExecutionPolicy.
Cela évite de modifier la politique de sécurité globale de PowerShell tout en permettant d’exécuter un script spécifique.

Powershell -ExecutionPolicy UnRestricted -command "C:\Users\Mak\Desktop\MonScriptPowerShell.ps1"
Exécution script désactivée PowerShell : Comment autoriser l'exécution de scripts Powershell

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.