Question PowerShell dit "l'exécution des scripts est désactivée sur ce système."


J'essaie d'exécuter le fichier .cmd qui appelle un script PowerShell à partir de l'invite de commande, et j'obtiens l'erreur ci-dessous:

Management_Install.ps1 ne peut pas être chargé car l'exécution des scripts est désactivée sur ce système.

J'ai couru set-executionpolicy unrestricted et quand je cours get-executionpolicy de PowerShell je reçois unrestricted arrière.

// Sortie de Powershell

PS C: \ Users \ Administrateur> get-executionpolicy

Libre

// Sortie du DOS

C: \ Projects \ Microsoft.Practices.ESB \ Source \ Échantillons \ Management Portal \ Install \ Scr

ipts> powershell. \ Management_Install.ps1 1

AVERTISSEMENT: Exécution de x86 PowerShell ...

Impossible de charger le fichier C: \ Projects \ Microsoft.Practices.ESB \ Source \ Exemples \ Management Portal \ Install \ Scripts \ Management_Install.ps1 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.

Au niveau de la ligne: 1 car: 25

  • . \ Management_Install.ps1 <<<< 1

    • CategoryInfo: NotSpecified: (:) [], PSSecurityException

    • FullyQualifiedErrorId: RuntimeException

C: \ Projets \ Microsoft.Practices.ESB \ Source \ Samples \ Portail de gestion \ Install \ Scripts> pause

Appuyez sur n'importe quelle touche pour continuer . . .

Le système est Windows Server 2008 R2.

Qu'est-ce que je fais mal?


1280
2017-10-27 21:39


origine


Réponses:


Si vous utilisez Windows Server 2008 R2 alors il y a un x64 et x86 version de PowerShell dont les règles d'exécution doivent être définies. Avez-vous défini la politique d'exécution sur les deux hôtes?

En tant que Administrateur, vous pouvez définir la politique d'exécution en tapant ceci dans votre fenêtre PowerShell:

Set-ExecutionPolicy RemoteSigned

Pour plus d'informations, voir Utilisation de la cmdlet Set-ExecutionPolicy.


1694
2017-10-28 01:16



Vous pouvez contourner cette politique en ajoutant -ExecutionPolicy ByPass lors de l'exécution de PowerShell

powershell -ExecutionPolicy ByPass -File script.ps1

541
2018-02-06 21:28



J'ai eu un problème similaire et noté que le défaut cmd sur Windows Server 2012, courait le x64.

Pour Windows 7, Windows 8, Windows Server 2008 R2 ou Windows Server 2012, exécutez les commandes suivantes en tant que Administrateur:

x86 (32 bits)
Ouvrir C:\Windows\SysWOW64\cmd.exe
Exécuter la commande powershell Set-ExecutionPolicy RemoteSigned

x64 (64 bits)
Ouvrir C:\Windows\system32\cmd.exe
Exécuter la commande powershell Set-ExecutionPolicy RemoteSigned

Vous pouvez vérifier le mode en utilisant

  • Dans CMD: echo %PROCESSOR_ARCHITECTURE%
  • Dans Powershell: [Environment]::Is64BitProcess

Les références:
MSDN - Stratégies d'exécution Windows PowerShell
Windows - explication de l'annuaire 32 bits vs 64 bits


108
2017-08-30 13:10



La plupart des réponses existantes expliquent la Comment, mais très peu expliquent Pourquoi. Et avant de commencer à exécuter du code à partir d'étrangers sur Internet, en particulier le code qui désactive les mesures de sécurité, vous devez comprendre exactement ce que vous faites. Alors, voici un peu plus de détails sur ce problème.

Du TechNet A propos de la page Stratégies d'exécution:

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.

Les avantages dont, énumérés par PowerShell Basics - Stratégie d'exécution et signature de code, sont:

  • Contrôle de l'exécution - Contrôler le niveau de confiance pour l'exécution des scripts.
  • Commandement de Highjack - Empêche l'injection de commandes sur mon chemin.
  • Identité - Le script est-il créé et signé par un développeur en qui j'ai confiance et / ou signé avec un certificat d'une autorité de certification de confiance?
  • Intégrité - Les scripts ne peuvent pas être modifiés par un logiciel malveillant ou un utilisateur malveillant.

Pour vérifier votre politique d'exécution actuelle, vous pouvez exécuter Get-ExecutionPolicy. Mais vous êtes probablement ici parce que vous voulez le changer.

Pour ce faire, vous exécuterez le Set-ExecutionPolicy cmdlet.

Vous aurez deux décisions importantes à prendre lors de la mise à jour de la politique d'exécution.

Type de stratégie d'exécution:

  • Restricted - Aucun script local, distant ou téléchargé ne peut être exécuté sur le système.
  • AllSigned - Tous les scripts lancés doivent être signés numériquement.
  • RemoteSigned - Tous les scripts distants (UNC) ou téléchargés doivent être signés.
  • Unrestricted - Aucune signature pour tout type de script est nécessaire.

Portée du nouveau changement

  • LocalMachine - La stratégie d'exécution affecte tous les utilisateurs de l'ordinateur.
  • CurrentUser - La stratégie d'exécution affecte uniquement l'utilisateur actuel.
  • Process - La stratégie d'exécution affecte uniquement le processus Windows PowerShell en cours.

† = par défaut

Par exemple: si vous vouliez changer la stratégie en RemoteSigned pour seulement CurrentUser, vous devez exécuter la commande suivante:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Remarque: Pour modifier la politique d'exécution, vous devez être en cours d'exécution PowerShell en tant qu'administrateur. Si vous êtes en mode normal et essayez de modifier la stratégie d'exécution, vous obtiendrez l'erreur suivante:

L'accès à la clé de Registre 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell' est refusé. Pour modifier la stratégie d'exécution pour l'étendue par défaut (LocalMachine), démarrez Windows PowerShell avec l'option "Exécuter en tant qu'administrateur".

Si vous souhaitez resserrer les restrictions internes sur vos propres scripts qui n'ont pas été téléchargés depuis Internet (ou du moins ne contiennent pas les métadonnées UNC), vous pouvez forcer la stratégie à exécuter uniquement des scripts signés. Pour signer vos propres scripts, vous pouvez suivre les instructions sur l'article de Scott Hanselman sur Scripts de signature PowerShell.

Remarque: La plupart des gens sont susceptibles d'obtenir cette erreur chaque fois qu'ils ouvrent Powershell parce que la première chose que PS essaie de faire quand il se lance est d'exécuter votre script de profil utilisateur qui configure votre environnement comme vous l'aimez.

Le fichier est généralement situé dans:

%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1

Vous pouvez trouver l'emplacement exact en exécutant la variable powershell

$profile

S'il n'y a rien qui vous intéresse dans le profil, et que vous ne voulez pas vous embêter avec vos paramètres de sécurité, vous pouvez simplement le supprimer et PowerShell ne trouvera rien qu'il ne puisse pas exécuter.


90
2017-11-16 08:05



Dans Windows 7:

Allez dans le menu Démarrer et recherchez "Windows PowerShell ISE".

Cliquez avec le bouton droit sur la version x86 et choisissez "Exécuter en tant qu'administrateur".

Dans la partie supérieure, coller Set-ExecutionPolicy RemoteSigned; lance le script. Choisissez "Oui".

Répétez ces étapes pour la version 64 bits de Powershell ISE (la version non x86).

Je ne fais que clarifier les étapes que @Chad Miller a suggérées. Merci Chad!


33
2017-12-04 05:25



Exécuter également cette commande avant que le script résout également le problème:

set-executionpolicy unrestricted

33
2018-03-27 06:11



Si vous êtes dans un environnement où vous n'êtes pas un administrateur, vous pouvez définir la politique d'exécution juste pour vous, et cela ne nécessitera pas d'administrateur.

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

ou

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"

Vous pouvez tout lire à ce sujet dans l'aide.

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full

26
2017-11-19 19:13



RemoteSigned: tous les scripts que vous avez créés seront exécutés et tous les scripts téléchargés sur Internet devront être signés par un éditeur de confiance.

OK, changez la politique en tapant simplement:

Set-ExecutionPolicy RemoteSigned

22
2017-07-20 12:37



j'utilise Windows 10 et était incapable d'exécuter une commande. La seule commande qui m'a donné quelques indices était la suivante:

[x64]

  1. Ouvrez C: \ Windows \ SysWOW64 \ cmd.exe [en tant qu'administrateur]
  2. Exécutez la commande> powershell Set-ExecutionPolicy sans restriction

Mais cela n'a pas fonctionné. C'était limité. Probablement de nouvelles politiques de sécurité pour Windows10. J'ai eu cette erreur:

Set-ExecutionPolicy: Windows PowerShell a correctement mis à jour votre stratégie d'exécution, mais le paramètre est remplacé par une stratégie définie sur une portée plus spécifique. En raison du remplacement, votre shell conservera sa politique d'exécution effective actuelle de ...

J'ai donc trouvé un autre moyen (Solution):

  1. Ouvrir Run Command / Console (Gagner + R)
  2. Type: gpedit.msc (Stratégie de groupe Éditeur)
  3. Parcourir pour Stratégie informatique locale -> La configuration d'un ordinateur -> Modèles d'administration -> Composants Windows -> Windows Powershell.
  4. Activer "Activer l'exécution de script"
  5. Définissez la stratégie selon vos besoins. Je mets le mien à "Autoriser tous les scripts".

Maintenant, ouvrez PowerShell et profitez;)


16
2017-09-01 09:32