about_Execution_Policies

Mis à jour: mai 2014

S'applique à: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.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 »

(https://go.microsoft.com/fwlink/?LinkID=113439)