# 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: ```powershell # 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: ```powershell # 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` ```powershell 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: ```powershell 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