about_Execution_Policies
Mis à jour: août 2012
S'applique à: Windows PowerShell 2.0, Windows PowerShell 3.0
RUBRIQUE
about_Execution_Policies
DESCRIPTION COURTE
Décrit les stratégies d’exécution Windows PowerShell® et explique comment les gérer.
DESCRIPTION DÉTAILLÉE
Les stratégies d’exécution Windows PowerShell vous permettent de déterminer les conditions dans lesquelles Windows PowerShell charge les fichiers de configuration et exécute les scripts.
Vous pouvez définir une stratégie d’exécution pour l’ordinateur local, pour l’utilisateur actuel ou pour une session particulière. Vous pouvez également utiliser un paramètre de stratégie de groupe pour définir la stratégie d’exécution pour les utilisateurs et ordinateurs.
Les stratégies d’exécution pour l’ordinateur local et l’utilisateur actuel sont stockées dans le Registre. Il est inutile de définir des stratégies d’exécution dans votre profil Windows PowerShell. La stratégie d’exécution pour une session particulière est stockée uniquement dans la mémoire et est perdue quand la session est fermée.
La stratégie d’exécution n’est pas un système de sécurité qui limite les actions de l’utilisateur. Par exemple, les utilisateurs peuvent contourner facilement une stratégie en tapant le contenu du script à la ligne de commande quand ils ne peuvent pas exécuter un script. Au lieu de cela, la stratégie d’exécution permet aux utilisateurs de définir des règles de base et les empêche de les violer involontairement.
STRATÉGIES D’EXÉCUTION WINDOWS POWERSHELL
Les stratégies d’exécution Windows PowerShell sont les suivantes :
« Restricted » est la stratégie par défaut.
RESTRICTED
- Stratégie d’exécution par défaut dans Windows 8, Windows Server 2012 et Windows 8.1.
- Autorise des commandes individuelles, mais n’exécute pas les scripts.
- Empêche l’exécution de tous les fichiers de script, y compris les fichiers de mise en forme et de configuration (.ps1xml), les fichiers de script de module (.psm1) et les profils Windows PowerShell (.ps1).
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.
- Demande votre confirmation avant d’exécuter des scripts provenant d’éditeurs qui n’ont pas encore classés comme approuvés ou non approuvés.
- Risque d’exécution de scripts signés, mais malveillants.
REMOTESIGNED
- Les scripts peuvent s’exécuter. Il s’agit de la stratégie d’exécution par défaut dans Windows Server 2012 R2.
- Nécessite une signature numérique d’un éditeur approuvé sur les scripts et fichiers de configuration qui sont téléchargés à partir d’Internet (y compris les programmes de messagerie instantanée et de courrier électronique).
- Ne nécessite pas de signatures numériques sur les scripts que vous avez écrits sur l’ordinateur local (qui ne sont pas téléchargés à partir d’Internet).
- Exécute les scripts téléchargés à partir d’Internet et non signés, si les scripts sont débloqués, par exemple à l’aide de l’applet de commande Unblock-File.
- Risque d’exécution de scripts non signés provenant de sources autres qu’Internet et de scripts signés, mais malveillants.
UNRESTRICTED
- Les scripts non signés peuvent s’exécuter. (Risque d’exécution de scripts malveillants.)
- Avertit l’utilisateur avant d’exécuter les scripts et fichiers de configuration qui sont téléchargés à partir d’Internet.
BYPASS
- Rien n’est bloqué et aucun avertissement ni aucune invite ne s’affiche.
- Cette stratégie d’exécution est conçue pour les configurations dans lesquelles un script Windows PowerShell est intégré à une application plus volumineuse ou pour les configurations dans lesquelles Windows PowerShell est la base d’un programme qui a son propre modèle de sécurité.
UNDEFINED
- Aucune stratégie d’exécution n’est définie dans l’étendue actuelle.
- Si la stratégie d’exécution dans toutes les étendues est Undefined, la stratégie d’exécution actuelle est Restricted, qui est la stratégie d’exécution par défaut.
Remarque : Sur les systèmes qui ne distinguent pas les chemins d’accès UNC (Universal Naming Convention) des chemins d’accès Internet, les scripts identifiés par un chemin d’accès UNC peuvent ne pas être autorisés à s’exécuter avec la stratégie d’exécution RemoteSigned.
ÉTENDUE DE STRATÉGIE D’EXÉCUTION
Vous pouvez définir une stratégie d’exécution qui est effective uniquement dans une étendue particulière.
Les valeurs valides pour le paramètre Scope sont Process, CurrentUser et LocalMachine. LocalMachine est la valeur par défaut lors de la définition d’une stratégie d’exécution.
Les valeurs du paramètre Scope sont répertoriées dans l’ordre de priorité.
- PROCESS
La stratégie d’exécution affecte uniquement la session active (le processus Windows PowerShell en cours).
La stratégie d’exécution est stockée dans la variable d’environnement $env:PSExecutionPolicyPreference, pas dans le Registre, et est supprimée quand la session est fermée. Vous ne pouvez pas changer la stratégie en modifiant la valeur de la variable.
- CURRENTUSER
la stratégie d'exécution affecte uniquement l'utilisateur actuel. Elle est stockée dans la sous-clé de Registre HKEY_CURRENT_USER.
- LOCALMACHINE
La stratégie d’exécution affecte tous les utilisateurs de l’ordinateur actuel. Elle est stockée dans la sous-clé de Registre HKEY_LOCAL_MACHINE.
La stratégie prioritaire est effective dans la session active, même si une stratégie plus restrictive a été définie à un niveau de priorité inférieur.
Pour plus d’informations, consultez Set-ExecutionPolicy.
OBTENIR VOTRE STRATÉGIE D’EXÉCUTION
Pour obtenir la stratégie d’exécution Windows PowerShell qui est en vigueur dans la session active, utilisez l’applet de commande Get-ExecutionPolicy.
La commande suivante obtient la stratégie d’exécution actuelle :
Get-ExecutionPolicy
Pour obtenir toutes les stratégies d’exécution qui affectent la session active et les afficher dans l’ordre de priorité, tapez :
Get-ExecutionPolicy -List
Le résultat doit ressembler à l’exemple de sortie suivant :
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine AllSigned
Dans ce cas, la stratégie d’exécution actuelle est RemoteSigned, car la stratégie d’exécution pour l’utilisateur actuel est prioritaire sur la stratégie d’exécution définie pour l’ordinateur local.
Pour obtenir la stratégie d’exécution définie pour une étendue particulière, utilisez le paramètre Scope de Get-ExecutionPolicy.
Par exemple, la commande suivante obtient la stratégie d’exécution pour l’étendue de l’utilisateur actuel.
Get-ExecutionPolicy -Scope CurrentUser
MODIFIER VOTRE STRATÉGIE D’EXÉCUTION
Pour modifier la stratégie d’exécution Windows PowerShell sur votre ordinateur, utilisez l’applet de commande Set-ExecutionPolicy.
La modification prend effet immédiatement ; vous n’avez pas besoin de redémarrer Windows PowerShell.
Si vous définissez la stratégie d’exécution pour l’ordinateur local (par défaut) ou l’utilisateur actuel, la modification est enregistrée dans le Registre et reste effective jusqu’à ce que vous la modifiiez à nouveau.
Si vous définissez la stratégie d’exécution pour le processus en cours, elle n’est pas enregistrée dans le Registre. Elle est conservée jusqu’à ce que le processus en cours et tous les processus enfants soient fermés.
Remarque : Dans Windows Vista et les versions ultérieures de Windows, pour exécuter des commandes qui modifient la stratégie d’exécution pour l’ordinateur local (par défaut), démarrez Windows PowerShell avec l’option « Exécuter en tant qu’administrateur ».
Pour modifier votre stratégie d’exécution, tapez :
Set-ExecutionPolicy -ExecutionPolicy <PolicyName>
Exemple :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Pour définir la stratégie d’exécution dans une étendue particulière, tapez :
Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>
Exemple :
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Une commande permettant de modifier une stratégie d’exécution peut réussir, mais sans changer la stratégie d’exécution actuelle.
Par exemple, une commande qui définit la stratégie d’exécution de l’ordinateur local peut réussir, mais peut être remplacée par la stratégie d’exécution pour l’utilisateur actuel.
SUPPRIMER VOTRE STRATÉGIE D’EXÉCUTION
Pour supprimer la stratégie d’exécution pour une étendue spécifique, affectez la valeur Undefined à la stratégie d’exécution.
Par exemple, pour supprimer la stratégie d’exécution pour tous les utilisateurs de l’ordinateur local, tapez :
Set-ExecutionPolicy Undefined
Vous pouvez également taper :
Set-ExecutionPolicy Undefined -scope LocalMachine
Si aucune stratégie d’exécution n’est définie dans une étendue, la stratégie d’exécution actuelle est Restricted, qui est la valeur par défaut.
DÉFINIR UNE STRATÉGIE D’EXÉCUTION DIFFÉRENTE POUR UNE SESSION
Vous pouvez utiliser le paramètre ExecutionPolicy de PowerShell.exe pour définir une stratégie d’exécution pour une nouvelle session Windows PowerShell. La stratégie affecte uniquement la session active et les sessions enfants.
Pour définir la stratégie d’exécution d’une nouvelle session, démarrez Windows PowerShell à la ligne de commande (par exemple, Cmd.exe ou Windows PowerShell), puis utilisez le paramètre ExecutionPolicy de PowerShell.exe pour définir la stratégie d’exécution.
Exemple :
PowerShell.exe -ExecutionPolicy AllSigned
La stratégie d’exécution que vous définissez n’est pas stockée dans le Registre, mais dans la variable d’environnement $env:PSExecutionPolicyPreference. La variable est supprimée quand vous fermez la session dans laquelle la stratégie est définie. Vous ne pouvez pas changer la stratégie en modifiant la valeur de la variable.
Au cours de la session, la stratégie d’exécution qui est définie pour la session est prioritaire sur une stratégie d’exécution qui est définie dans le Registre pour l’ordinateur local ou l’utilisateur actuel. Toutefois, elle n’est pas prioritaire sur la stratégie d’exécution définie à l’aide d’un paramètre de stratégie de groupe (voir ci-dessous).
UTILISER UNE STRATÉGIE DE GROUPE POUR GÉRER LA STRATÉGIE D’EXÉCUTION
Vous pouvez utiliser le paramètre de stratégie de groupe « Activer l’exécution des scripts » pour gérer la stratégie d’exécution des ordinateurs de votre entreprise. Le paramètre de stratégie de groupe remplace les stratégies d’exécution définies dans Windows PowerShell dans toutes les étendues.
Les paramètres de la stratégie « Activer l’exécution des scripts » sont les suivants :
-- Si vous désactivez « Activer l’exécution des scripts », les scripts ne s’exécutent pas. Cela équivaut à la stratégie d’exécution « Restricted ».
-- Si vous activez « Activer l’exécution des scripts », vous pouvez sélectionner une stratégie d’exécution. Les paramètres de stratégie de groupe sont équivalents aux paramètres de stratégie d’exécution suivants.
Group Policy Execution Policy
------------ ----------------
Allow all scripts. Unrestricted
Allow local scripts RemoteSigned
and remote signed
scripts.
Allow only signed AllSigned
scripts.
-- Si la stratégie « Activer l’exécution des scripts » n’est pas configurée, elle n’a aucun effet. La stratégie d’exécution définie dans Windows PowerShell est effective.
Les fichiers PowerShellExecutionPolicy.adm et PowerShellExecutionPolicy.admx ajoutent la stratégie « Activer l’exécution des scripts » aux nœuds Configuration ordinateur et Configuration utilisateur dans l’Éditeur de stratégie de groupe dans les chemins d’accès suivants.
For Windows XP and Windows Server 2003:
Administrative Templates\Windows Components\Windows PowerShell
For Windows Vista and later versions of Windows:
Administrative Templates\Classic Administrative Templates\
Windows Components\Windows PowerShell
Les stratégies définies dans le nœud Configuration ordinateur sont prioritaires sur les stratégies définies dans le nœud Configuration utilisateur.
Le fichier PowerShellExecutionPolicy.adm est disponible dans le Centre de téléchargement Microsoft. Pour plus d’informations, consultez « Modèles d’administration pour Windows PowerShell » à l’adresse https://go.microsoft.com/fwlink/?LinkId=131786.
Pour plus d’informations, consultez about_Group_Policy_Settings à l’adresse https://go.microsoft.com/fwlink/?LinkID=251696.
PRIORITÉ DE LA STRATÉGIE D’EXÉCUTION
Lors de la détermination de la stratégie d’exécution actuelle pour une session, Windows PowerShell évalue les stratégies d’exécution dans l’ordre de priorité suivant :
- Group Policy: Computer Configuration
- Group Policy: User Configuration
- Execution Policy: Process (or PowerShell.exe -ExecutionPolicy)
- Execution Policy: CurrentUser
- Execution Policy: LocalMachine
GÉRER LES SCRIPTS SIGNÉS ET NON SIGNÉS
Si votre stratégie d’exécution Windows PowerShell est RemoteSigned, Windows PowerShell n’exécute pas les scripts non signés qui sont téléchargés à partir d’Internet, y compris les programmes de messagerie instantanée et de courrier électronique.
Vous pouvez signer le script ou choisir d’exécuter un script non signé sans modifier la stratégie d’exécution.
À compter de Windows PowerShell 3.0, vous pouvez utiliser le paramètre Stream de l’applet de commande Get-Item pour détecter les fichiers qui sont bloqués, car ils ont été téléchargés à partir d’Internet, et vous pouvez utiliser l’applet de commande Unblock-File pour débloquer les scripts afin de les exécuter dans Windows PowerShell.
Pour plus d’informations, consultez about_Signing, Get-Item et Unblock-File.
VOIR AUSSI
about_Environment_Variables
about_Signing
Get-ExecutionPolicy.
Set-ExecutionPolicy
Get-Item
Unblock-File
« Modèles d’administration pour Windows PowerShell »
(https://go.microsoft.com/fwlink/?LinkId=131786)
« Aide de la console PowerShell.exe »