Aller au contenu

Stratégies d'exécution PowerShell:

https://docs.microsoft.com/fr-fr/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7

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 aucun avertissement ou invite.
  • 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é.

Default

  • Définit la stratégie d'exécution par défaut.
  • Restricted 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 des signatures numériques sur des 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 est Undefined, la politique d'exécution effective est Restricted, 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.

Portée de la politique d'exécution:

MachinePolicy

Défini par une stratégie de groupe pour tous les utilisateurs de l'ordinateur.

UserPolicy

Défini par une stratégie de groupe pour l'utilisateur actuel de l'ordinateur.

Process

L'étendue du processus affecte uniquement la session PowerShell en cours. La stratégie d'exécution est enregistrée dans la variable d'environnement $ env: PSExecutionPolicyPreference, plutôt que dans le registre. Lorsque la session PowerShell est fermée, la variable et la valeur sont supprimées.

CurrentUser

La stratégie d'exécution affecte uniquement l'utilisateur actuel. Il est stocké dans la sous-clé de registre HKEY_CURRENT_USER.

LocalMachine

La stratégie d'exécution affecte tous les utilisateurs de l'ordinateur actuel. Il est stocké dans la sous-clé de registre HKEY_LOCAL_MACHINE.

Obtenir la politique d'exécution:

# Obtenir la politique d'exécution courante

PS C:\Users\bruno> Get-ExecutionPolicy
Restricted

# Obtenir toutes les politiques d'exécution qui affectent la session en cours et les afficher dans l'ordre de priorité:

PS C:\Users\bruno> Get-ExecutionPolicy -List

Scope             ExecutionPolicy
-----            ---------------
MachinePolicy     Undefined
UserPolicy          Undefined
Process             Undefined
CurrentUser       Undefined
LocalMachine      Undefined

# Obtenir la stratégie d'exécution pour la portée CurrentUser:

PS C:\Users\bruno> Get-ExecutionPolicy -Scope CurrentUser
Undefined

Modifier la politique d'exécution:

# Modifier la politique d'exécution courante
#  - nécessite d'ouvrir PowerShell en tant qu'administrateur

PS Set-ExecutionPolicy -ExecutionPolicy RemoteSigned


PS Get-ExecutionPolicy -List

Scope               ExecutionPolicy
-----                       ---------------                                                                                           MachinePolicy       Undefined                                                                                              UserPolicy          Undefined                                                                                                 Process                   Undefined                                                                                             CurrentUser           Undefined                                                                                            LocalMachine        RemoteSigned   <

# Modifier la politique d'exécution courante pour CurrentUser

PS Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

PS C:\WINDOWS\system32> Get-ExecutionPolicy -List                                                                                                                                                                                                       Scope                   ExecutionPolicy                                                                                                   -----                     ---------------                                                                                           MachinePolicy       Undefined                                                                                              UserPolicy          Undefined                                                                                                 Process                 Undefined                                                                                             CurrentUser             RemoteSigned  <                                                                                           LocalMachine        Undefined  

Supprimer la politique d'exécution:

Cela revient à la déclarer Undefined

PS Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine

PS Get-ExecutionPolicy -List

Scope.              ExecutionPolicy
-----                       ---------------                                                                                           MachinePolicy       Undefined                                                                                              UserPolicy          Undefined                                                                                                 Process                   Undefined                                                                                             CurrentUser           Undefined                                                                                            LocalMachine        Undefined   <

Modifier la politique d'exécution pour une session:

PS pwsh.exe -ExecutionPolicy AllSigned

Priorités de politique d'exécution:

Lors de la détermination de la stratégie d'exécution effective pour une session, PowerShell évalue les stratégies d'exécution dans l'ordre de priorité suivant:

  • Group Policy: MachinePolicy
  • Group Policy: UserPolicy
  • Execution Policy: Process (or pwsh.exe -ExecutionPolicy)
  • Execution Policy: CurrentUser
  • Execution Policy: LocalMachine

Dernière mise à jour: May 7, 2020