Comment activer l'exécution des scripts PowerShell?

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

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

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

    2. Activez l'exécution des 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 des scripts signés à partir d'Internet.

    Voir aussi Exécution de scripts sur Microsoft TechNet Library.

    La politique d'exécution par défaut est définie comme étant restreinte, vous pouvez la visualiser en tapant:

     Get-ExecutionPolicy 

    Vous devez taper ce qui suit pour passer au mode sans restriction:

     Set-ExecutionPolicy unrestricted 

    J'espère que cela t'aides

    Sur ma machine que j'utilise pour les scripts dev, j'utiliserai – non restreint comme ci-dessus. Cependant, lors du déploiement de mes scripts, à une machine utilisateur final, je vais simplement appeler powershell avec le commutateur -executionpolicy:

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

    Selon la version et la configuration de Windows, vous pouvez avoir l'avertissement suivant, même en mode Unrestricted :

     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 politique "bypass", activée avec la commande suivante:

     Set-ExecutionPolicy Bypass 

    De la documentation :

    Bypass: Rien n'est bloqué et il n'y a pas d'avertissements ou d'invites.

    Ceci est évidemment peu sûr, veuillez comprendre les risques impliqués.

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

     Get-ExecutionPolicy; 

    Par défaut, il est restreint . Pour autoriser l'exécution de Scripts PowerShell, nous devons définir cette ExecutionPolicy en tant que Bypass ou Non Restricted .

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

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

    La politique sans restriction 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é à partir d'Internet, vous êtes invité à obtenir l'autorisation avant qu'il ne soit exécuté.

    Alors que dans la politique de contournement , rien n'est bloqué et il n'y a pas d'avertissements ou d'invites pendant l'exécution du script. Bypass ExecutionPolicy est plus détendu que sans restriction.