{{tag>sysadmin windows powershell sécurité script}}
====== PowerShell : Définir la stratégie d’exécution des scripts ======
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 !