Question Comment activer l'exécution de scripts PowerShell?


Lorsque j'essaie d'exécuter mon script PowerShell, j'obtiens cette erreur:

Le fichier C: \ Common \ Scripts \ hello.ps1 ne peut pas être chargé car l'exécution des scripts est désactivée sur ce système. S'il vous plaît voir "get-help about_signing" pour plus de détails.
  À la ligne: 1 car: 13
  +. \ hello.ps1 <<<<
      + CategoryInfo: NotSpecified: (:) [], PSSecurityException
      + FullyQualifiedErrorId: RuntimeException


181
2018-02-08 18:41


origine




Réponses:


  1. Démarrez Windows PowerShell avec l'option "Exécuter en tant qu'administrateur". Seuls les membres du groupe Administrateurs sur l'ordinateur peuvent modifier la stratégie d'exécution.

  2. Activer l'exécution de scripts non signés en entrant:

    set-executionpolicy remotesigned
    

Cela permettra d'exécuter des scripts non signés que vous écrivez sur votre ordinateur local et signé scripts d'Internet.

Voir également Scripts en cours d'exécution sur la bibliothèque Microsoft TechNet.


271
2018-02-08 18:44



+1 pour les télécommandes au lieu de sans restriction. Vous pouvez exécuter vos scripts locaux sans vous exposer à des dangers de partout. - DarrellNorton
Merci - cet article m'a aidé. Cependant, j'avais encore d'autres problèmes parce que je n'avais pas exécuté PowerShell "en tant qu'administrateur" sous win8 - sergeantKK
Est-ce que cela changera la politique de manière permanente ou est-ce que je dois le faire chaque fois que je redémarre mon ordinateur? - Ray
Y a-t-il un moyen de permettre l'exécution d'un spécifique script de puissance? Alors peut-être que je veux juste permettre hello.ps1 à partir de l'OP ou Microsoft.PowerShell_profile.ps1 dans la boîte d'un utilisateur? (Je pense que cela relève sans aucun doute de la question de l'OP, certes large (ha, que je vois maintenant, c'est aussi la vôtre!). Mais si vous sentez que c'est une nouvelle question, je peux la poser.) - ruffin
@ Ruffin Voulez-vous s'il vous plaît poser une question distincte pour cela? Vous pouvez ensuite le lier ici. - Pavel Chuchuva


La stratégie d'exécution par défaut est définie sur restreinte, vous pouvez la voir en tapant:

Get-ExecutionPolicy

Vous devez taper ce qui suit pour le faire passer en mode sans restriction:

Set-ExecutionPolicy unrestricted

J'espère que cela t'aides


60
2018-02-08 18:43



-1. c'est WAY trop ouvert pour juste exécuter. RemoteSigned c'est mieux. - TomTom
La signature nécessitant un sens est utile si vous souhaitez copier et coller des scripts malveillants sur Internet. Si vous supposez que l'utilisateur n'est pas stupide, alors "remotesigned" n'ajoute aucune sécurité et rend la vie difficile. - Guss


Sur ma machine que j'utilise pour des scripts de développement, je vais utiliser -unrestricted comme ci-dessus. Lors du déploiement de mes scripts, cependant, sur un ordinateur d'utilisateur final, je vais simplement appeler powershell avec le commutateur -executionpolicy:

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1

48
2018-01-14 00:46



Vous pouvez vouloir combiner cette astuce avec une astuce polyglotte dans un fichier .CMD. Voir stackoverflow.com/a/8597794/5314 - Jay Bazuzi
Agréable! J'ai déployé des sfx fabriqués par winrar rarlabs.com - MDMoore313
Cette astuce m'a permis d'exécuter le script Powershell de Git Bash (MINGW32 bash) - Kamil Szot


Nous pouvons obtenir le statut de ExecutionPolicy en cours par la commande ci-dessous:

Get-ExecutionPolicy;

Par défaut c'est Limité. Pour permettre l'exécution de scripts PowerShell, nous devons définir cette ExecutionPolicy soit Contourne ou Libre.

Nous pouvons définir la politique pour l'utilisateur actuel comme Bypass ou Unrestricted en utilisant l'une des commandes PowerShell ci-dessous:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

Libre La stratégie charge tous les fichiers de configuration et exécute tous les scripts. Si vous exécutez un script non signé qui a été téléchargé depuis Internet, vous êtes invité à en demander l'autorisation avant de l'exécuter.

Alors qu'en Contourne politique, rien n'est bloqué et il n'y a pas d'avertissement ni d'invite lors de l'exécution du script. Bypass ExecutionPolicy est plus détendu que Non restreint.


7
2017-09-07 07:06





Selon la version et la configuration de Windows, l'avertissement suivant peut apparaître, même dans Unrestricted mode:

Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this
script can potentially harm your computer. If you trust this script, use the 
Unblock-File cmdlet to allow the script to run without this warning message. 
Do you want to run?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D")

La solution consiste à utiliser la stratégie "bypass", activée avec la commande suivante:

Set-ExecutionPolicy Bypass

Du Documentation:

Bypass: rien n'est bloqué et il n'y a pas d'avertissement ni de message.

Ceci est évidemment insécurisant, veuillez comprendre les risques encourus.


3
2018-01-21 10:01



C'était le seul moyen de faire fonctionner mon script dans un environnement WINE avec Powershell 2.0. Je vous remercie. - Wyatt8740


Une clé de reg avec:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ PowerShell]   "EnableScripts" = dword: 00000001 "ExecutionPolicy" = "Contourner"

et:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Unrestricted"

fonctionne bien aussi.


1
2017-11-29 10:10





La raison pour laquelle la clé reg fonctionne est parce qu'elle fait exactement ce que font les commandes PS. Les commandes écrivent les modifications apportées aux clés reg. Les commandes sont beaucoup plus rapides et faciles que de créer une clé de reg ou de creuser dans le registre.


-1
2018-04-05 13:49



C'est tout à fait faux: les clés mentionnées dans d'autres réponses modifient la stratégie d'exécution de powershells, ce qui permet ensuite au script powershell de s'exécuter. - Patrick R.