Politique d'exécution de PowerShell expliquée

15 septembre 2020 2424 Vues politique d'exécution powershell

Parcourir les sujets de publication

Qu'est-ce que PowerShell ExecutionPolicy ?

ExecutionPolicy dans PowerShell est une fonctionnalité de sécurité qui contrôle la manière dont PowerShell charge les fichiers de configuration et exécute les scripts. Les fonctionnalités d'ExecutionPolicy aident à empêcher PowerShell d'exécuter des scripts malveillants.

Vous pouvez définir une politique d'exécution pour un ordinateur, un utilisateur ou une session. le Set-ExecutionPolicySet-ExecutionPolicy L'applet de commande peut être utilisée pour définir ExecutionPolicy. La commande PowerShell.exe a également un paramètre ExecutionPolicy que vous pouvez utiliser pour définir Powershell ExecutionPolicy.

Dans ce guide, vous découvrirez les différents types de politiques d'exécution PowerShell. Vous apprendrez également à utiliser les commandes Set-ExecutionPolicy et PowerShell.exe -ExecutionPolicy.

Politiques d'exécution disponibles

Cette section explique les différentes ExecutionPolicy que vous pouvez définir dans PowerShell et ce que chacune vous permettra de faire.

Limité

  • Il s'agit de la stratégie d'exécution par défaut dans Windows 8, Server 2012 et versions ultérieures.
  • Empêche l'exécution des fichiers de configuration PowerShell (.ps1xml), des fichiers de script de module (.psm1) et des profils Windows PowerShell (.ps1)
  • Autorise les commandes PowerShell individuelles mais refuse les scripts

TousSigné

Lorsque vous définissez AllSigned ExecutionPolicy, PowerShell :

  • Exécute tous les scripts
  • Exige qu'avant qu'un script ne soit autorisé à s'exécuter, il doit être signé par un éditeur de confiance. Cela inclut les scripts écrits sur l'ordinateur local
  • Invite à confirmer avant d'exécuter un script d'un éditeur dont vous n'avez pas confirmé qu'il est approuvé
  • Peut exécuter des codes signés mais malveillants

Signé à distance

Politique d'exécution signée à distance :

  • Autorise l'exécution des scripts
  • Exige que tous les scripts téléchargés à partir d'Internet soient signés numériquement par un éditeur que vous avez spécifié comme approuvé. Cela inclut les scripts reçus par e-mail et plateformes de messagerie instantanée.
  • Ne nécessitera pas de signature numérique de scripts écrits sur un ordinateur local
  • Peut autoriser l'exécution de scripts malveillants provenant d'autres sources

Libre

  • Autorise l'exécution de scripts non attribués
  • Vous avertira avant d'exécuter un script depuis Internet
  • Risque d'exécuter des codes ou des scripts malveillants

Contourne

Avec Bypass ExecutionPolicy :

  • Aucun script n'est bloqué. N'offre pas non plus d'avertissements.

Indéfini

  • Signifie qu'aucune ExecutionPolicy n'est définie
  • L'ExecutionPolicy effective est Restricted (par défaut)

Portée et priorité de ExecutionPolicy

Vous pouvez appliquer la politique d'exécution PowerShell à :

LocalMcachine : affecte uniquement les utilisateurs actuels. Cela a le moins de priorité

Utilisateur actuel : La politique d'exécution n'affecte que l'utilisateur actuel. A la priorité sur LocalMcachine mais a une priorité moindre sur Traiter .

Traiter : s'applique uniquement à la session en cours. Prend la priorité la plus élevée.

Comment obtenir la politique d'exécution actuelle de PowerShell

Pour voir la politique d'exécution actuelle de PowerShell, exécutez la commande ci-dessous :

|__+_| Comment définir une politique d'exécution avec Set-ExecutionPolicy

Pour voir l'ensemble ExecutionPolicy pour tous les champs d'application, utilisez cette commande :

|__+_| Comment définir une politique d'exécution avec Set-ExecutionPolicy

Vous pouvez également obtenir une stratégie d'exécution basée sur la portée. Voici quelques exemples de commandes :

|__+_|

Comment définir PowerShell ExecutionPolicy

Comme je l'ai mentionné dans l'introduction, vous pouvez définir ExecutionPolicy avec l'applet de commande Set-ExecutionPolicy. Vous pouvez également utiliser la commande PowerShell.exe -ExecutionPolicy.

Comment définir une politique d'exécution avec Set-ExecutionPolicy

La syntaxe de l'applet de commande Set-ExecutionPolicy est :

|__+_|

Par exemple, pour définir la politique d'exécution sur Signé à distance utilisez la commande ci-dessous :

|__+_|

Voici le résultat de la commande.

Comment définir une politique d'exécution avec Set-ExecutionPolicyLa commande a échoué car je n'ai pas ouvert PowerShell en tant qu'administrateur.

Voici la commande exécutée en tant qu'administrateur :

Comment définir une stratégie d'exécution avec PowerShell.exe -ExecutionPolicy

Comme vous pouvez le voir sur l'image, la nouvelle politique d'exécution est maintenant Signé à distance .

A partir des 2 dernières commandes, on m'a demandé de confirmer la commande. Pour contourner cette invite, incluez le -Obliger paramètre.

La commande s'exécute maintenant sans demander de confirmation.

le -Obliger Le paramètre est particulièrement utile dans les scripts. Sans ce paramètre, votre script peut s'arrêter.

Par défaut, cette commande définit la politique d'exécution pour Machine locale portée. Pour le confirmer, exécutez la commande ci-dessous :

|__+_|

Pour définir la stratégie d'exécution à appliquer à une autre portée, utilisez le – Portée paramètre.

La commande ci-dessous définit la stratégie d'exécution pour Utilisateur actuel :

|__+_|

Comme vous pouvez le voir sur le résultat, Utilisateur actuel la politique n'est plus Indéfini . C'est maintenant Contourne , la stratégie définie avec la dernière commande.

Comment définir ExecutionPolicy avec PowerShell.exe -ExecutionPolicy

Si vous souhaitez contourner la politique d'exécution pour la session connectée, vous pouvez définir la politique d'exécution pour la ligne de commande actuelle. Ceci est réalisé à l'aide de la commande PowerShell.exe.

Avant de donner des exemples, voici la politique d'exécution actuelle :

La politique d'exécution actuelle est Limité . C'est parce que le Traiter la portée prime. Pour confirmer, regardez le résultat ci-dessous :

Si vous vous souvenez, Limité la politique n'autorisera PAS l'exécution des scripts.

Cela signifie que si j'essaie d'exécuter un script, l'accès me sera refusé. L'image ci-dessous montre une série de commandes et leurs résultats. Voir mon explication sous l'image.

La première commande affichée dans l'image est :

|__+_|

J'ai essayé d'exécuter un script PowerShell. Puis j'ai reçu le message d'erreur ci-dessous :

Le fichier C:PSschedule powershell exampleCreate-folders-from-text-file.ps1 ne peut pas être chargé car l'exécution des scripts est désactivée sur ce système.

La raison en est que la politique d'exécution actuelle est Limité . Il n'autorise l'exécution d'aucun script.

Retour à l'image de référence. Dans la ligne suivante, j'ai exécuté la commande suivante :

|__+_|

En effet, je peux définir une politique d'exécution temporaire pour la ligne de commande à l'aide du paramètre -ExecutionPolicy de la commande powershell.exe. Mais j'ai reçu le même message d'erreur. La raison en est que je dois définir la politique d'exécution avant d'appeler le script.

Puis dans la ligne suivante, j'ai exécuté cette commande :

|__+_|

Cela définit la stratégie d'exécution pour la session connectée en cours sur Libre . Ainsi, lorsque j'exécute maintenant mon script PowerShell, il s'est exécuté avec succès ! Voir l'image de référence ci-dessus.

Le résultat de la dernière analyse est le suivant : vous pouvez définir Powershell ExecutionPolicy pour la session en cours à l'aide de Powershell.exe -ExecutionPolicy. Mais, vous devez d'abord exécuter la commande avant d'appeler votre script.

Pour confirmer que Powershell.exe définit uniquement la stratégie pour la session en cours, je vais exécuter la commande ci-dessous à partir de la session en cours :

|__+_|

Le résultat est Libre pour le Utilisateur actuel portée. Si je me déconnecte de ma session en cours et que je me reconnecte. Il reviendra à la politique définie par la commande Set-ExecutionPolicy.

Conclusion

J'espère avoir été en mesure de simplifier la façon d'obtenir et de définir les politiques d'exécution PowerShell. Si vous avez des questions ou des commentaires, utilisez le formulaire Laisser une réponse à la fin de la page.

Autres guides utiles

  • Opérateur PowerShell non égal : applications, exemples
  • Explication de Powershell For Loop : syntaxe et exemples

Ressources et références supplémentaires