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

J'essaie d'exécuter un fichier [tag:cmd] qui appelle un script [tag:powershell] depuis cmd.exe, et j'obtiens l'erreur suivante :

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

J'ai exécuté

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

et lorsque j'exécute Get-ExecutionPolicy à partir de [tag:powershell], j'obtiens Unrestricted en retour.

PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> powershell .\Management_Install.ps1 1

WARNING: Running x86 PowerShell...

Le fichier C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1 ne peut pas être chargé car l'exécution des scripts est désactivée sur ce système. Pour plus de détails, veuillez consulter la section "get-help about_signing&quot ;.

A la ligne:1 char:25

  • .\Management_Install.ps1 <<<< 1
  • CategoryInfo : NotSpecified : ( :) [], PSSecurityException
  • FullyQualifiedErrorId : RuntimeException
C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE

Press any key to continue . . .

Le système est Windows Server 2008R2.

Qu'est-ce que je fais de mal ?

Solution

Si vous utilisez [Windows Server 2008][1] R2, il existe une version x64 et x86 de PowerShell qui doivent toutes deux avoir leur stratégie d'exécution définie. Avez-vous défini la stratégie d'exécution sur les deux hôtes ?

En tant qu' 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 [Using the Set-ExecutionPolicy Cmdlet][2].

[1] : https://en.wikipedia.org/wiki/Windows_Server_2008 [2] : https://docs.microsoft.com/powershell/module/microsoft.powershell.security/set-executionpolicy

Commentaires (6)

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

powershell -ExecutionPolicy ByPass -File script.ps1
Commentaires (5)

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

OK, changez la politique en tapant simplement :

Set-ExecutionPolicy RemoteSigned
Commentaires (1)