239 votes

Pourquoi mon script créé localement n'est-il pas autorisé à s'exécuter dans le cadre de la politique d'exécution RemoteSigned ?

Puisque cette question continue d'attirer des réponses qui sont soit réfutées par le corps de la question ou qui n'abordent pas le problème réel, veuillez lire ce simple résumé de ce que vous devez savoir :

  • C'est no une question du type "Pourquoi mon installation par défaut de PowerShell n'exécute-t-elle pas les scripts ?".
  • C'est no une question du type "Pourquoi mon installation de PowerShell n'exécute-t-elle pas les scripts téléchargés depuis l'internet ?".
  • La question est de savoir pourquoi le RemoteSigned La politique d'exécution empêche l'exécution de script quand elle ne devrait pas.
  • RemoteSigned es el sólo politique d'exécution que je veux utiliser. Je suis conscient que d'autres politiques moins restrictives sont disponibles. Si ces politiques étaient des substituts acceptables, je les aurais simplement utilisées à la place et cette question n'existerait pas.
  • La politique d'exécution est déjà réglé sur RemoteSigned . En le changeant de RemoteSigned a RemoteSigned n'est pas une solution.
  • Le fichier script est créé et stocké localement.
  • Le fichier script n'est pas bloqué. Le fichier script n'a jamais été bloqué (voir point précédent).
  • Le fichier script ne peut être débloqué car il n'y a rien à débloquer (voir point précédent).
  • Le fichier script est (tenté d'être) exécuté par un administrateur.
  • Windows PowerShell est la seule application concernée. Non Windows PowerShell ISE ni Command Prompt ni aucun autre outil ou éditeurs ne sont pertinents.
  • La cause du problème a déjà a été identifié (voir réponse acceptée). Après presque 8 ans, je pense que toutes les autres explications évidentes explications évidentes, qu'elles soient applicables ou non, ont été postées aussi. Si vous pensez le contraire, alors veuillez lire la question et l'existant réponses existantes dans leur intégralité avant d'ajouter le vôtre.

J'utilise Windows PowerShell 2.0 sur Windows 7 Professionnel 64 bits. J'ai un script sur mon ordinateur. Desktop qui provoque l'erreur suivante lorsque j'essaie de l'exécuter :

File C:\Users\UserName\Desktop\Script.ps1 cannot be loaded. The file C:\Users\UserName\Desktop\Script.ps1 is not digitally signed. The script will not execute on the system.  Please see "get-help about_signing" for more details..
At line:1 char:54
+ C:\Users\UserName\Desktop\TestGetWindowsUpdateLog.ps1 <<<<
    + CategoryInfo          : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException

Je suis à la fois un administrateur de domaine et un administrateur local, et si j'exécute Get-ExecutionPolicy -List je peux voir que le Group Policy Object que j'ai créé pour configurer PowerShell applique correctement les RemoteSigned politique d'exécution au niveau de la machine :

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy    RemoteSigned
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

J'ai créé le script moi-même en Notepad et a utilisé le Sysinternals ' streams et le fichier Properties pour confirmer que le script n'est pas traité comme provenant d'internet. Si je copie le script sur un partage réseau sur un serveur de domaine, alors il est autorisé à s'exécuter. Si j'exécute Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine alors le script local n'est toujours pas autorisé à s'exécuter, ce qui est logique puisque la politique d'exécution au niveau du MachinePolicy aura la priorité.

Comme le montrent les documents suivants about_Execution_Policies ( actuel ; au moment de la question ), le RemoteSigned la politique signifie :

  • Les scripts peuvent s'exécuter.

  • Exige une signature numérique d'un éditeur de confiance sur les scripts et les fichiers de configuration qui sont téléchargés depuis Internet. (y compris les programmes de courrier électronique et de messagerie instantanée).

  • N'exige pas de signatures numériques sur les scripts que vous avez exécutés et que vous avez écrits sur l'ordinateur local (et non téléchargés sur l'Internet).

  • Risque d'exécuter des scripts non signés provenant de sources autres qu'Internet et des scripts signés, mais malveillants.

Mon script n'est pas signé, mais comme il est à la fois créé et exécuté localement, il devrait satisfaire au troisième point ci-dessus. Par conséquent...

  • Pourquoi mon script n'est-il pas autorisé à s'exécuter ?
  • Pourquoi PowerShell se plaint-il que mon script "n'est pas signé numériquement" alors que cette exigence ne devrait s'appliquer qu'aux fichiers provenant d'Internet ?
  • Pourquoi PowerShell ne se soucie-t-il plus du fait que le script n'est pas signé lorsqu'il est exécuté depuis un partage réseau ?

-1voto

Sumith Ekanayake Points 379

Ceci est dû au fait que la politique d'exécution de Powershell est définie par défaut comme étant restreinte, ce qui empêche l'exécution de scripts PowerShell et protège de l'exécution de scripts malveillants.

Vous pouvez modifier le périmètre d'exécution pour un périmètre spécifique en exécutant la commande suivante

Set-ExecutionPolicy -Scope Process

-3voto

Newguy Points 5

J'avais le même problème et je l'ai résolu en changeant le programme par défaut pour ouvrir les fichiers .ps1 par PowerShell. Il était réglé sur Bloc-notes .

-3voto

Veuillez faire une sauvegarde du fichier script.bs1

Ce qui fonctionne pour moi, c'est de supprimer le fichier script.bs1 et d'exécuter la commande d'exécution.

-4voto

Pauline Points 269

Essayez d'exécuter l'interface graphique Powershell en tant qu'administrateur.

-6voto

Rakesh Dongarwar Points 337

Exécutez les 2 commandes suivantes dans la fenêtre PowerShell

  1. Politique d'exécution sans restriction

  2. Débloquer le fichier -Path D:\PowerShell\<strkeep>script<strkeep>.ps1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X