456 votes

Comment activer l'exécution des scripts PowerShell ?

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

Fichier C:\Common\<strkeep>scripts<strkeep>\hello.ps1 ne peut être chargé car l'exécution de scripts est désactivée sur ce système. Veuillez consulter "get-help about_signing" pour plus de détails.
A la ligne:1 char:13
+ . \hello.ps1 <<<<
+ CategoryInfo : NotSpecified : ( :) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException

1 votes

Je sais que ce fil de discussion date, mais deux personnes de la communauté ont écrit deux messages qui traitent de cette réponse en profondeur ici. adamtheautomator.com/run-powershell-script

6voto

jma Points 973

Un fichier .reg avec :

Windows Registry Editor Version 5.00

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

et :

Windows Registry Editor Version 5.00

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

fonctionne aussi.

0 votes

Vous devez faire une nouvelle ligne après chaque touche ou cela ne fonctionnera pas.

2voto

Eric Green Points 21

Pour une raison quelconque, la cmdlet PowerShell n'a pas activé l'exécution locale de manière globale, mais uniquement pour le contexte de l'utilisateur local. Si j'essayais de lancer un script Powershell à partir de l'invite bash de CygWin, par exemple, qui s'exécute dans son propre contexte utilisateur, il ne s'exécutait pas, donnant l'erreur "n'est pas signé numériquement". La solution était d'aller dans l'éditeur de stratégie de groupe local -> Stratégie de l'ordinateur local -> Modèles d'administration -> Composants Windows -> Windows PowerShell et de double-cliquer sur 'Turn on Execution'. Cela m'a ensuite permis de le changer en 'Activé' et ensuite la politique d'exécution de "Autoriser les locaux et les signés à distance" et de le faire fonctionner globalement quel que soit le contexte utilisateur.

2voto

r0ng Points 123

La réponse acceptée est correcte, mais la modification de la politique n'est disponible que pour l'instance de Powershell en cours d'exécution, c'est-à-dire une fois que l'instance de Powershell est arrêtée. La politique sera réinitialisée. Si un utilisateur rouvre une autre instance de Powershell, la politique par défaut sera appliquée, à savoir Restricted

Pour ma part, j'ai besoin d'utiliser la console VisualStudio Code et g++ de cygwin pour construire des choses. La console utilise Powershell, avec la politique par défaut, rien ne peut être fait. Une solution est de changer la politique chaque fois que la console est lancée dans la console VisualStudio Code, peut-être un script de changer la politique.

Je suis paresseux, donc une autre solution est d'exécuter le Powershell en mode administrateur, similaire à ce que la réponse acceptée fait. mais avec un paramètre supplémentaire qui change les valeurs dans la table du registre. Une fois que c'est fait. Les autres instances de Powershell utiliseront le RemoteSigned par défaut.

set-executionpolicy remotesigned -Scope CurrentUser

0voto

Arijit D Points 1
  1. Open Start.

  2. Recherchez PowerShell, cliquez avec le bouton droit de la souris sur le premier résultat et cliquez sur l'option Exécuter en tant qu'administrateur.

  3. Tapez la commande suivante pour autoriser l'exécution de scripts et appuyez sur Entrée :

    Set-ExecutionPolicy RemoteSigned
  4. Tapez A et appuyez sur Entrée (le cas échéant).

  5. Tapez la commande suivante pour exécuter le script et appuyez sur Entrée :

    & "C:\PATH\TO\SCRIPT\first_script.ps1"

    Dans la commande ci-dessus, assurez-vous de changer "PATH \TO\<strkeep><strkeep>script<strkeep><strkeep> " à l'emplacement de votre script.

Après avoir terminé les étapes, le script s'exécutera, et s'il a été créé correctement, vous devriez voir sa sortie sans problème.

0voto

Proxyma Points 1

Juste une remarque :

Ne pas utiliser PowerShell ISE à exécuter set-executionpolicy remotesigned comme un script. Cela ne fonctionne pas dans mon cas.

Exécutez-le en mode élevé PowerShell - Veuillez suivre la recommandation étape par étape fournie par Pavel Chuchuva.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X