Stratégies d'exécution PowerShell:¶
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