RUBRIQUE about_Execution_Policies DESCRIPTION COURTE Décrit les stratégies d'exécution Windows PowerShell et explique comment les gérer. DESCRIPTION LONGUE Les stratégies d'exécution Windows PowerShell vous permettent de déterminer les conditions dans lesquelles Windows PowerShell charge des fichiers de configuration et exécute des 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 des ordinateurs et des utilisateurs. Les stratégies d'exécution de l'ordinateur local et de l'utilisateur actuel sont stockées dans le Registre. Vous n'avez pas besoin de définir des stratégies d'exécution dans votre profil Windows PowerShell. La stratégie d'exécution d'une session particulière, qui est stockée uniquement en mémoire, est perdue lors de la fermeture de la session. La stratégie d'exécution n'est pas un système de sécurité qui restreint les actions des utilisateurs. Par exemple, les utilisateurs peuvent contourner facilement une stratégie en tapant le contenu de script sur la ligne de commande lorsqu'ils ne peuvent pas exécuter ce dernier. La stratégie d'exécution aide plutôt les utilisateurs à établir 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 se présentent comme suit : " Restricted " est la stratégie par défaut. Restricted - Stratégie d'exécution par défaut. - Autorise l'exécution de commandes individuelles, mais pas de 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 être exécutés. - Requiert que tous les scripts et fichiers de configuration, y compris les scripts que vous écrivez sur l'ordinateur local, soient signés numériquement par un éditeur approuvé. - Vous invite à confirmer l'exécution des scripts des éditeurs que vous n'avez pas encore classés comme approuvés ou non approuvés. - Risque d'exécuter des scripts non signés provenant de sources autres qu'Internet et des scripts signés, mais malveillants. RemoteSigned - Les scripts peuvent être exécutés. - Requiert que les scripts et fichiers de configuration téléchargés à partir d'Internet (y compris les programmes de messagerie électronique et de messagerie instantanée) soient signés numériquement par un éditeur approuvé. - Ne requiert pas la signature numérique des scripts exécutés et écrits sur l'ordinateur local (non téléchargés à partir d'Internet). - Risque d'exécuter des scripts signés, mais malveillants. Unrestricted - Les scripts non signés peuvent être exécutés. (Cette stratégie peut entraîner l'exécution de scripts malveillants.) - Prévient l'utilisateur avant d'exécuter des scripts et des fichiers de configuration téléchargés à partir d'Internet. Bypass - Aucun blocage n'est appliqué et il n'y a pas d'avertissement, ni d'invite. - Cette stratégie d'exécution est conçue pour les configurations dans lesquelles un script Windows PowerShell est intégré à une application plus grande ou celles dans lesquelles Windows PowerShell sert de base à un programme disposant de 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 de toutes les étendues a la valeur Undefined, la stratégie d'exécution Restricted, qui correspond à celle définie par défaut, s'applique. Remarque : sur les systèmes qui ne distinguent pas les chemins d'accès UNC (Universal Naming Convention) des chemins Internet, les scripts identifiés par un chemin UNC peuvent ne pas être autorisés à s'exécuter avec la stratégie d'exécution RemoteSigned. ÉTENDUE DE LA STRATÉGIE D'EXÉCUTION ---------------------- Vous pouvez définir une stratégie d'exécution qui s'applique uniquement à une étendue spécifique. Les valeurs valides pour l'étendue sont Process, CurrentUser et LocalMachine. LocalMachine correspond à la valeur par défaut lors de la définition d'une stratégie d'exécution. Les valeurs d'étendue apparaissent dans l'ordre de précédence. - Process La stratégie d'exécution affecte uniquement la session active (processus Windows PowerShell actuel). La stratégie d'exécution est stockée dans la variable d'environnement $PSExecutionPolicyPreference. Cette valeur est supprimée lors de la fermeture de la session dans laquelle la stratégie est définie. - 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 s'applique à la session active, même si une stratégie plus restrictive a été définie à un niveau de précédence inférieur. Pour plus d'informations, consultez Set-ExecutionPolicy. OBTENTION DE LA STRATÉGIE D'EXÉCUTION ------------------------------ Pour obtenir la stratégie d'exécution Windows PowerShell qui s'applique à la session active, utilisez l'applet de commande Get- ExecutionPolicy. La commande suivante permet d'obtenir 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 précédence, tapez : get-executionpolicy -list Le résultat sera similaire à 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 de l'utilisateur actuel est prioritaire sur celle définie pour l'ordinateur local. Pour obtenir la stratégie d'exécution définie pour une étendue spécifique, utilisez le paramètre Scope de Get-ExecutionPolicy. Par exemple, la commande suivante permet d'obtenir la stratégie d'exécution correspondant à l'étendue de l'utilisateur actuel. get-executionpolicy -scope CurrentUser CHANGER DE STRATÉGIE D'EXÉCUTION ------------------------------ Pour changer la stratégie d'exécution Windows PowerShell sur votre ordinateur, utilisez l'applet de commande Set-ExecutionPolicy. La modification prend immédiatement effet ; vous n'avez pas besoin de redémarrer Windows PowerShell. Si vous définissez la stratégie d'exécution de l'ordinateur local (valeur par défaut) ou de l'utilisateur actuel, la modification est enregistrée dans le Registre et s'applique jusqu'à ce que vous effectuiez une nouvelle modification. Si vous définissez la stratégie d'exécution du processus actuel, elle n'est pas enregistrée dans le Registre. Elle est conservée jusqu'à la fermeture du processus actuel et de tous les processus enfants. Remarque : dans Windows Vista et les versions ultérieures de Windows, pour exécuter des commandes permettant de changer la stratégie d'exécution de l'ordinateur local (valeur par défaut), démarrez Windows PowerShell avec l'option Exécuter en tant qu'administrateur. Pour changer de stratégie d'exécution, tapez : Set-ExecutionPolicy <nom de stratégie> Par exemple : Set-ExecutionPolicy RemoteSigned Pour définir la stratégie d'exécution d'une étendue spécifique, tapez : Set-ExecutionPolicy <nom de stratégie> -scope <étendue> Par exemple : Set-ExecutionPolicy RemoteSigned -scope CurrentUser Une commande permettant de changer une stratégie d'exécution peut réussir, sans toutefois modifier la stratégie d'exécution actuelle. Par exemple, une commande définissant la stratégie d'exécution de l'ordinateur local peut réussir, mais être remplacée par la stratégie d'exécution de l'utilisateur actuel. SUPPRESSION DE LA STRATÉGIE D'EXÉCUTION ---------------------------- Pour supprimer la stratégie d'exécution d'une étendue spécifique, définissez la valeur de la stratégie d'exécution sur Undefined. Par exemple, pour supprimer la stratégie d'exécution de 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 pour les étendues, la stratégie d'exécution actuelle est Restricted, qui correspond à la valeur par défaut. DÉFINITION D'UNE STRATÉGIE D'EXÉCUTION DANS POWERSHELL.EXE ----------------------------------------- Vous pouvez utiliser le paramètre ExecutionPolicy de PowerShell.exe afin de 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 au niveau de 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. Par 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 PSExecutionPolicyPreference. La variable est supprimée lorsque vous fermez la session dans laquelle la stratégie est définie. Pendant la session, la stratégie d'exécution définie pour celle-ci est prioritaire sur une stratégie d'exécution 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 (présenté ci-dessous). UTILISATION DE LA STRATÉGIE DE GROUPE POUR LA GESTION DE LA STRATÉGIE D'EXÉCUTION ------------------------------------------- Vous pouvez utiliser le paramètre de stratégie de groupe " Turn on Script Execution " (Activer l'exécution de script) 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 stratégie " Turn on Script Execution " (Activer l'exécution de script) se présentent comme suit : -- Si vous désactivez " Turn on Script Execution " (Activer l'exécution de script), les scripts ne s'exécutent pas. Ce paramétrage est équivalent à la stratégie d'exécution " Restricted ". -- Si vous activez " Turn on Script Execution " (Activer l'exécution de script), 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. Stratégie de groupe Stratégie d'exécution ------------ ---------------- Autoriser tous les scripts. Unrestricted Autoriser les scripts locaux RemoteSigned et les scripts signés distants. Autoriser uniquement les AllSigned scripts signés. -- Si le paramètre " Turn on Script Execution " (Activer l'exécution de script) n'est pas configuré, il n'a aucun effet. La stratégie d'exécution définie dans Windows PowerShell s'applique. Le fichier PowerShellExecutionPolicy.adm ajoute la stratégie " Turn on Script Execution " (Activer l'exécution de script) aux nœuds Configuration ordinateur et Configuration utilisateur dans les chemins ci-dessous, dans l'Éditeur de stratégie de groupe. Pour Windows XP et Windows Server 2003 : Modèles d'administration\Composants Windows\Windows PowerShell Pour Windows Vista et les versions ultérieures de Windows : Modèles d'administration\Modèles d'administration classiques\Composants Windows\Windows PowerShell Les stratégies définies le nœud Configuration ordinateur sont prioritaires sur celles 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 " (en anglais) à l'adresse https://go.microsoft.com/fwlink/?LinkId=131786. PRÉCÉDENCE DES STRATÉGIES D'EXÉCUTION --------------------------- Lors de la détermination de la stratégie d'exécution actuelle d'une session, Windows PowerShell évalue les stratégies d'exécution dans l'ordre de précédence suivant : - Stratégie de groupe : Configuration ordinateur - Stratégie de groupe : Configuration utilisateur - Stratégie d'exécution : Process (ou PowerShell.exe - ExecutionPolicy) Stratégie d'exécution : CurrentUser - Stratégie d'exécution : LocalMachine GESTION DES SCRIPTS SIGNÉS ET NON SIGNÉS ---------------------------------- Si vous utilisez la stratégie d'exécution Windows PowerShell RemoteSigned, Windows PowerShell n'exécutera pas les scripts non signés qui sont téléchargés à partir d'Internet (y compris les programmes de messagerie électronique et de messagerie instantanée). Vous pouvez signer le script ou choisir d'exécuter un script non signé sans changer la stratégie d'exécution. Pour plus d'informations, consultez about_Signing. VOIR AUSSI Get-ExecutionPolicy Set-ExecutionPolicy about_Signing " Modèles d'administration pour Windows PowerShell " (en anglais) (https://go.microsoft.com/fwlink/?LinkId=131786)