Set-ExecutionPolicy
Définit les stratégies d’exécution de PowerShell pour les ordinateurs Windows.
Syntax
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
L’applet de commande modifie les Set-ExecutionPolicy
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 Set-ExecutionPolicy
de commande est disponible, mais PowerShell affiche un message de console qui n’est pas pris 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 avant qu’ils ne soient exécutés.
L’étendue Set-ExecutionPolicy
par défaut de l’applet de commande est LocalMachine
, ce qui affecte tout le monde qui utilise l’ordinateur. Pour modifier la stratégie d’exécution pour LocalMachine
, démarrez PowerShell avec Exécuter en tant que Administration istrator.
Pour afficher les stratégies d’exécution pour chaque étendue, utilisez Get-ExecutionPolicy -List
. Pour afficher la stratégie d’exécution effective pour votre session PowerShell, utilisez Get-ExecutionPolicy
sans paramètres.
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 Set-ExecutionPolicy
de commande utilise le paramètre ExecutionPolicy pour spécifier la RemoteSigned
stratégie. 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 Get-ExecutionPolicy
de commande 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 Restricted
de l’étendue LocalMachine
sur .
LocalMachine
est plus restrictif, mais n’est pas la stratégie efficace, car elle est en conflit avec une stratégie de groupe. La Restricted
stratégie est écrite dans la ruche HKEY_LOCAL_MACHINE
du Registre .
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
PS> Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds
Name Property
---- --------
Microsoft.PowerShell Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
ExecutionPolicy : Restricted
ScriptedDiagnostics ExecutionPolicy : Unrestricted
L’applet Set-ExecutionPolicy
de commande utilise le paramètre ExecutionPolicy pour spécifier la Restricted
stratégie. Le paramètre Scope spécifie la valeur d’étendue par défaut. LocalMachine
L’applet Get-ChildItem
de commande utilise le paramètre Path avec le lecteur pour spécifier l’emplacement HKLM:
du Registre.
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 l’entrée de pipeline et ne nécessite pas le paramètre ExecutionPolicy .
Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
L’applet Invoke-Command
de commande est exécutée sur l’ordinateur local et envoie le ScriptBlock à l’ordinateur distant. Le paramètre ComputerName spécifie l’ordinateur distant, Server01. Le paramètre ScriptBlock s’exécute Get-ExecutionPolicy
sur l’ordinateur distant. L’objet Get-ExecutionPolicy
est envoyé vers le bas du 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 AllSigned
stratégie.
Le paramètre Scope spécifie le CurrentUser
. Pour afficher les paramètres de stratégie d’exécution, utilisez l’applet Get-ExecutionPolicy
de commande 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 Undefined
stratégie. Le paramètre Scope spécifie le CurrentUser
. Pour afficher les paramètres de stratégie d’exécution, utilisez l’applet Get-ExecutionPolicy
de commande 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 actuelle. La stratégie d’exécution est enregistrée dans la variable $env:PSExecutionPolicyPreference
d’environnement 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
Utilise Set-ExecutionPolicy
le paramètre ExecutionPolicy pour spécifier la AllSigned
stratégie. Le paramètre Scope spécifie la valeur Process
. Pour afficher les paramètres de stratégie d’exécution, utilisez l’applet Get-ExecutionPolicy
de commande 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 RemoteSigned
stratégie d’exécution 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ûr avant d’utiliser l’applet Unblock-File
de commande. L’applet Unblock-File
de commande 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:
Utilise Set-ExecutionPolicy
le paramètre ExecutionPolicy pour spécifier la RemoteSigned
stratégie. La stratégie est définie pour l’étendue par défaut. LocalMachine
L’applet Get-ExecutionPolicy
de commande indique qu’il RemoteSigned
s’agit de la stratégie d’exécution effective pour la session PowerShell actuelle.
Start-ActivityTracker.ps1 script is executed from the current directory. The script is blocked by
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 Unblock-File
de commande utilise le paramètre Path pour débloquer le script.
Pour vérifier que Unblock-File
la stratégie d’exécution n’a pas changé, Get-ExecutionPolicy
affiche la stratégie d’exécution effective. RemoteSigned
Le script est Start-ActivityTracker.ps1
exécuté à partir du répertoire actif. Le script commence à s’exécuter, car il a été débloqué par l’applet de Unblock-File
commande.
Paramètres
-Confirm
Vous demande une confirmation avant d’exécuter l’applet de commande.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ExecutionPolicy
Spécifie la stratégie d’exécution. Si aucune stratégie de groupe n’est définie et que la stratégie d’exécution de chaque étendue est définie Undefined
, elle 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 aucun avertissement, ni aucune invite ne s'affiche.Default
. Définit la stratégie d’exécution par défaut.Restricted
pour les clients Windows ouRemoteSigned
pour 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 affecté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.
Type: | ExecutionPolicy |
Accepted values: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
Supprime toutes les invites de confirmation. Soyez prudent avec ce paramètre pour éviter les résultats inattendus.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Scope
Spécifie l’étendue affectée par une stratégie d’exécution. L’étendue par défaut est LocalMachine
.
La stratégie d’exécution effective est déterminée par l’ordre de priorité comme suit :
MachinePolicy
- Défini par une stratégie de groupe pour tous les utilisateurs de l’ordinateurUserPolicy
- Défini par une stratégie de groupe pour l’utilisateur actuel de l’ordinateurProcess
- Affecte uniquement la session PowerShell actuelleLocalMachine
- Étendue par défaut qui affecte tous les utilisateurs de l’ordinateurCurrentUser
- Affecte uniquement l’utilisateur actuel
L’étendue Process
affecte uniquement la session PowerShell actuelle. La stratégie d’exécution est enregistrée dans la variable $env:PSExecutionPolicyPreference
d’environnement, plutôt que dans le Registre. Lorsque la session PowerShell est fermée, la variable et la valeur sont supprimées.
Les stratégies d’exécution pour l’étendue CurrentUser
sont écrites dans la ruche HKEY_LOCAL_USER
du Registre .
Les stratégies d’exécution pour l’étendue LocalMachine
sont écrites dans la ruche HKEY_LOCAL_MACHINE
du Registre .
Type: | ExecutionPolicyScope |
Accepted values: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
Position: | 1 |
Default value: | LocalMachine |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Montre ce qui se passe en cas d’exécution de l’applet de commande. L’applet de commande n’est pas exécutée.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger un objet de stratégie d’exécution vers cette applet de commande.
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 pas de sortie.
Notes
Set-ExecutionPolicy
ne modifie pas 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 l’activation de la stratégie de groupe sur l’exécution du script est activée pour l’ordinateur ou l’utilisateur, la préférence utilisateur est enregistrée, mais elle n’est pas effective. PowerShell affiche un message qui explique le conflit.