Set-ExecutionPolicy
Définit les stratégies d’exécution de PowerShell pour les ordinateurs Windows.
Syntaxe
All
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
L’applet de commande Set-ExecutionPolicy modifie les stratégies d’exécution PowerShell pour les ordinateurs Windows. Pour plus d'informations, voir about_Execution_Policies.
À compter de PowerShell 6.0 pour les ordinateurs non-Windows, la stratégie d’exécution par défaut est Unrestricted et ne peut pas être modifiée. L’applet de commande Set-ExecutionPolicy est disponible, mais PowerShell affiche un message de console indiquant qu'elle n’est pas prise en charge.
Une stratégie d’exécution fait partie de la stratégie de sécurité PowerShell. Les stratégies d’exécution déterminent si vous pouvez charger des fichiers de configuration, tels que votre profil PowerShell ou exécuter des scripts. Et si les scripts doivent être signés numériquement.
L’étendue par défaut de l’applet de commande Set-ExecutionPolicy est LocalMachine, ce qui affecte tout le monde qui utilise l’ordinateur. Pour modifier la stratégie d’exécution de LocalMachine, démarrez PowerShell avec Exécuter en tant qu’administrateur.
Pour afficher les stratégies d’exécution pour chaque étendue, utilisez Get-ExecutionPolicy -List. Pour voir la stratégie d’exécution effective de votre session PowerShell, utilisez Get-ExecutionPolicy sans paramètres.
Note
La stratégie d’exécution peut également être définie par la stratégie de groupe. Si une stratégie de groupe est définie, elle remplace le jeu de stratégies d’exécution localement. Windows PowerShell 5.1 et PowerShell 6.0 et versions ultérieures stockent le paramètre de stratégie d’exécution dans différents emplacements et sont gérés séparément. Les paramètres de Windows PowerShell (powershell.exe) n'affectent pas PowerShell (pwsh.exe).
Exemples
Exemple 1 : Définir une stratégie d’exécution
Cet exemple montre comment définir la stratégie d’exécution pour l’ordinateur local.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine RemoteSigned
L’applet de commande Set-ExecutionPolicy utilise le paramètre ExecutionPolicy pour spécifier la stratégie RemoteSigned. Le paramètre Scope spécifie la valeur d’étendue par défaut, LocalMachine. Pour afficher les paramètres de stratégie d’exécution, utilisez l’applet de commande Get-ExecutionPolicy avec le paramètre List.
Exemple 2 : Définir une stratégie d’exécution qui est en conflit avec une stratégie de groupe
Cette commande tente de définir la stratégie d’exécution de l’étendue LocalMachine sur Restricted.
LocalMachine est plus restrictif, mais n’est pas la stratégie efficace, car elle est en conflit avec une stratégie de groupe.
PS> Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope LocalMachine
Set-ExecutionPolicy : PowerShell updated your local preference successfully, but the setting is
overridden by the Group Policy applied to your system. Due to the override, your shell will retain
its current effective execution policy of "AllSigned". Contact your Group Policy administrator for
more information. At line:1 char:20 + Set-ExecutionPolicy <<<< restricted
Exemple 3 : Appliquer la stratégie d’exécution d’un ordinateur distant à un ordinateur local
Cette commande obtient l’objet de stratégie d’exécution à partir d’un ordinateur distant et définit la stratégie sur l’ordinateur local.
Get-ExecutionPolicy envoie un objet Microsoft.PowerShell.ExecutionPolicy vers le bas du pipeline.
Set-ExecutionPolicy accepte les entrées du pipeline et ne requiert pas le paramètre ExecutionPolicy.
Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
L’applet de commande Get-ExecutionPolicy sur l’ordinateur distant. L’objet Get-ExecutionPolicy est envoyé dans le pipeline vers le Set-ExecutionPolicy.
Set-ExecutionPolicy applique la stratégie d’exécution à l’étendue par défaut de l’ordinateur local, LocalMachine.
Exemple 4 : Définir l’étendue d’une stratégie d’exécution
Cet exemple montre comment définir une stratégie d’exécution pour une étendue spécifiée, CurrentUser. L’étendue CurrentUser affecte uniquement l’utilisateur qui définit cette étendue.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser AllSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy utilise le paramètre ExecutionPolicy pour spécifier la stratégie AllSigned.
Le paramètre Scope spécifie le CurrentUser. Pour afficher les paramètres de stratégie d’exécution, utilisez l’applet de commande Get-ExecutionPolicy avec le paramètre List.
La stratégie d’exécution effective pour l’utilisateur devient AllSigned.
Exemple 5 : Supprimer la stratégie d’exécution de l’utilisateur actuel
Cet exemple montre comment utiliser la Undefined stratégie d’exécution pour supprimer une stratégie d’exécution pour une étendue spécifiée.
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
Set-ExecutionPolicy utilise le paramètre ExecutionPolicy pour spécifier la stratégie Undefined. Le paramètre Scope spécifie le CurrentUser. Pour afficher les paramètres de stratégie d’exécution, utilisez l’applet de commande Get-ExecutionPolicy avec le paramètre List.
Exemple 6 : Définir la stratégie d’exécution pour la session PowerShell actuelle
L’étendue Process affecte uniquement la session PowerShell active. La stratégie d’exécution est enregistrée dans la variable d’environnement $Env:PSExecutionPolicyPreference et est supprimée lorsque la session est fermée.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process AllSigned
CurrentUser RemoteSigned
LocalMachine RemoteSigned
La Set-ExecutionPolicy utilise le paramètre ExecutionPolicy pour spécifier la stratégie AllSigned. Le paramètre Scope spécifie la valeur Process. Pour afficher les paramètres de stratégie d’exécution, utilisez l’applet de commande Get-ExecutionPolicy avec le paramètre List.
Exemple 7 : Débloquer un script pour l’exécuter sans modifier la stratégie d’exécution
Cet exemple montre comment la stratégie d’exécution RemoteSigned vous empêche d’exécuter des scripts non signés.
Une bonne pratique consiste à lire le code du script et à vérifier qu’il est sécurisé avant de à l’aide de l’applet de commande Unblock-File. L’applet de commande Unblock-File débloque les scripts afin qu’ils puissent s’exécuter, mais ne modifient pas la stratégie d’exécution.
PS> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
PS> Get-ExecutionPolicy
RemoteSigned
PS> .\Start-ActivityTracker.ps1
.\Start-ActivityTracker.ps1 : File .\Start-ActivityTracker.ps1 cannot be loaded.
The file .\Start-ActivityTracker.ps1 is not digitally signed.
The script will not execute on the system.
For more information, see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Start-ActivityTracker.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
PS> Unblock-File -Path .\Start-ActivityTracker.ps1
PS> Get-ExecutionPolicy
RemoteSigned
PS> .\Start-ActivityTracker.ps1
Task 1:
La Set-ExecutionPolicy utilise le paramètre ExecutionPolicy pour spécifier la stratégie RemoteSigned. La stratégie est définie pour l’étendue par défaut, LocalMachine.
L’applet de commande Get-ExecutionPolicy indique que RemoteSigned est la stratégie d’exécution effective de la session PowerShell actuelle.
Le script Start-ActivityTracker.ps1 est exécuté à partir du répertoire actif. Le script est bloqué par RemoteSigned, car le script n’est pas signé numériquement.
Pour cet exemple, le code du script a été examiné et vérifié comme sûr à exécuter. L’applet de commande
Pour vérifier que Unblock-File n’a pas modifié la stratégie d’exécution, Get-ExecutionPolicy affiche la stratégie d’exécution effective, RemoteSigned.
Le script, Start-ActivityTracker.ps1 est exécuté à partir du répertoire actif. Le script commence à s’exécuter, car il a été débloqué par l’applet de commande Unblock-File.
Paramètres
-Confirm
Vous invite à confirmer avant d’exécuter l’applet de commande.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | False |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | cf |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-ExecutionPolicy
Spécifie la stratégie d’exécution. S’il n’existe aucune stratégie de groupe et que la stratégie d’exécution de chaque étendue est définie sur Undefined, Restricted devient la stratégie effective pour tous les utilisateurs.
Les valeurs de stratégie d’exécution acceptables sont les suivantes :
-
AllSigned. Nécessite que tous les scripts et tous les fichiers de configuration soient signés par un éditeur approuvé, y compris les scripts écrits sur l’ordinateur local. -
Bypass. Rien n’est bloqué et il n’y a pas d’avertissements ou d’invites. -
Default. Définit la stratégie d’exécution par défaut.Restrictedpour les clients Windows ou lesRemoteSignedpour les serveurs Windows. -
RemoteSigned. Exige que tous les scripts et tous les fichiers de configuration téléchargés à partir d’Internet soient signés par un éditeur approuvé. Stratégie d’exécution par défaut pour les ordinateurs Windows Server. -
Restricted. Ne charge pas les fichiers de configuration ou n’exécute pas de scripts. Stratégie d’exécution par défaut pour les ordinateurs clients Windows. -
Undefined. Aucune stratégie d’exécution n’est définie pour l’étendue. Supprime une stratégie d'exécution assignée d'une étendue qui n'est pas définie par une stratégie de groupe. Si la stratégie d’exécution dans toutes les étendues estUndefined, la stratégie d’exécution effective estRestricted. -
Unrestricted. À compter de PowerShell 6.0, il s’agit de la stratégie d’exécution par défaut pour les ordinateurs non-Windows et ne peut pas être modifiée. Charge tous les fichiers de configuration et exécute tous les scripts. Si vous exécutez un script non signé téléchargé à partir d’Internet, vous êtes invité à entrer l’autorisation avant son exécution.
Propriétés du paramètre
| Type: | ExecutionPolicy |
| Valeur par défaut: | None |
| Valeurs acceptées: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Force
Supprime toutes les invites de confirmation. Soyez prudent avec ce paramètre pour éviter les résultats inattendus.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | False |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Scope
Spécifie l’étendue affectée par une stratégie d’exécution. L’étendue par défaut est LocalMachine. Le paramètre accepte les valeurs suivantes :
-
MachinePolicy- Défini par des paramètres 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: affecte uniquement la session PowerShell active -
CurrentUser- Affecte uniquement l’utilisateur actuel -
LocalMachine- Étendue par défaut qui affecte tous les utilisateurs de l’ordinateur
Note
MachinePolicy et UserPolicy sont définis par les stratégies de groupe. Si vous essayez de définir l’étendue sur l’une de ces valeurs, PowerShell affiche un message d’erreur indiquant que l’étendue est définie par une stratégie de groupe et ne peut pas être modifiée.
Si la stratégie d’exécution n’est pas définie par la stratégie de groupe, la stratégie d’exécution effective est déterminée par l’ordre de priorité comme suit :
-
Process- Priorité la plus élevée -
CurrentUser- Deuxième priorité la plus élevée -
LocalMachine- Priorité la plus faible
Pour plus d’informations sur la façon dont PowerShell stocke les stratégies d’exécution, consultez la section NOTES .
Propriétés du paramètre
| Type: | ExecutionPolicyScope |
| Valeur par défaut: | LocalMachine |
| Valeurs acceptées: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | 1 |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-WhatIf
Affiche ce qui se passerait si l’applet de commande s’exécute. L’applet de commande n’est pas exécutée.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | False |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | Wi |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
CommonParameters
Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.
Entrées
ExecutionPolicy
Vous pouvez diriger un objet de stratégie d’exécution vers cette applet de commande.
String
Vous pouvez diriger une chaîne qui contient le nom d’une stratégie d’exécution vers cette applet de commande.
Sorties
None
Cette applet de commande ne retourne aucune sortie.
Notes
Set-ExecutionPolicyne peut pas modifier les étendues et UserPolicy les MachinePolicy étendues, car elles sont définies par les stratégies de groupe.
Set-ExecutionPolicy ne remplace pas une stratégie de groupe, même si la préférence utilisateur est plus restrictive que la stratégie.
Si la stratégie d’exécution n’est pas définie par la stratégie de groupe, la stratégie d’exécution effective est déterminée par l’ordre de priorité comme suit :
-
Process- Priorité la plus élevée. L’étendueProcessaffecte uniquement la session PowerShell active. 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- Deuxième priorité la plus élevée. Le paramètre est stocké dans le fichier spécifiquepowershell.config.jsonà l’utilisateur. -
LocalMachine- Priorité la plus faible. Le paramètre est stocké dans le$PSHOME/powershell.config.jsonfichier.
Pour plus d’informations sur le powershell.config.json fichier, consultez about_PowerShell_Config.