Lors du lancement de PowerShell l'option -ExecutionPolicy
permet de définir la stratégie d'exécution des scripts pour le processus PowerShell et les processus fils.
# Démarrage de PowerShell sans autoriser l’exécution de scrips # pour le processus courant powershell -ExecutionPolicy Restricted Get-ExecutionPolicy Restricted Get-ExecutionPolicy -Scope Process Restricted # Affiche les portées par priorité et la stratégie associée Get-ExecutionPolicy -List Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Restricted CurrentUser Bypass LocalMachine Bypass
Dans l'exemple ci-dessus on peut lire que la stratégie associée à la portée (ou étendue) Process
est Restricted
, elle est prioritaire sur les étendues CurrentUser
et LocalMachine
c'est donc sa stratégie qui s'applique : l'exécution des scripts est refusée :
.\HelloWorld.ps1 .\HelloWorld.ps1 : Impossible de charger le fichier C:\Users\yoann\dev\HelloWorld.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. Au caractère Ligne:1 : 1 + .\HelloWorld.ps1 + ~~~~~~~~~~~~~~~~ + CategoryInfo : Erreur de sécurité : (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
La cmdlet Set-ExecutionPolicy permet de modifier la stratégie associée à la portée Process :
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope Process # Affiche les portées et leur stratégie Get-ExecutionPolicy -List Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Bypass LocalMachine Bypass
La stratégie Bypass est associée à l'utilisateur courant, elle s'applique à présent. Le script peut être exécuté :
.\HelloWorld.ps1
Hello World !