Lorsque vous essayez d’exécuter un script PowerShell qui n’a pas été signé par un éditeur de confiance, vous pouvez obtenir l’erreur de sécurité suivante :
« script.ps1 :Le fichier path\script.ps1 ne peut pas être chargé. Le fichier path\script.ps1 n’est pas signé numériquement. Vous ne pouvez pas exécuter ce script sur le système actuel. »

Cette erreur de sécurité peut se produire lorsque la politique d’exécution de PowerShell est définie sur Allsigned ou Remotesigned et que le script n’est pas signé.

La politique d’exécution Allsigned permet l’exécution de tous les scripts Powershell qui sont signés. Avant d’exécuter le script, vous serez invité à confirmer que vous faites confiance à l’éditeur qui a signé le script.

La politique d’exécution à distance restreint l’exécution des scripts téléchargés qui ne sont pas signés. Les scripts qui sont exécutés depuis l’ordinateur local n’ont pas besoin d’être signés.

Solution

Il existe différentes méthodes pour surmonter cette erreur. Vous pouvez choisir soit de signer le script PowerShell, de modifier la politique d’exécution, de contourner la politique ou de débloquer le fichier afin qu’il puisse être exécuté une fois sur cette session.

Vérifier la politique d’exécution

Tout d’abord, vérifiez votre politique d’exécution à l’aide de la cmdlet Get-ExecutionPolicy

PS C:\> Get-ExecutionPolicyAllSigned

Le paramètre liste de la cmdlet Get-ExecutionPolicy vous indique la politique d’exécution pour chaque scope.

PS C:\> Get-ExecutionPolicy -list Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Undefined LocalMachine RemoteSigned

La politique d’exécution par défaut pour toutes les versions de Windows, sauf pour Windows 2012 R2, est Restricted. La politique d’exécution par défaut dans Windows 2012 R2 est RemoteSigned.

Changement permanent de la politique d’exécution

La méthode la plus simple mais non sécurisée pour se débarrasser de ce message d’erreur est de changer la politique d’exécution en utilisant la cmdlet SetExecutionPolicy. La commande suivante définit la politique d’exécution à unrestricted.

PS C:\> Set-ExecutionPolicy unrestricted

Appuyez sur Y pour confirmer la modification lorsque vous y êtes invité. La modification de la politique est mise à jour dans le registre et restera jusqu’à ce que vous la modifiiez à nouveau.

Changement temporaire de la politique d’exécution

Au lieu de changer la politique d’exécution de façon permanente, vous pourriez définir une politique différente pour une seule session PowerShell. Cela se fait en utilisant le paramètre ExecutionPolicy de powershell.exe

Ouvrir une invite de commande ou PowerShell et exécuter la commande :

C:\> powershell.exe -executionpolicy -bypass

La commande ci-dessus ouvre une session PowerShell avec la politique d’exécution pour cette session définie sur Bypass, ce qui signifie que rien n’est bloqué.

Débloquer un fichier qui a été téléchargé

Lorsque la politique d’exécution est RemoteSigned, les fichiers qui sont téléchargés depuis internet (ou depuis des emails) sont bloqués pour vous protéger de l’exécution de scripts non sûrs. Si vous croyez que le contenu du script est sûr, alors vous pouvez le débloquer pour l’exécuter sur votre session en utilisant le cmdlet Unblock-File

PS C:\> Unblock-File -Path C:\Downloads\script1.ps1

Une fois que vous avez changé la politique d’exécution de façon permanente ou temporaire pour une session ou un script particulier, vous pouvez continuer à exécuter le script mais avant cela, assurez-vous que le contenu du script n’endommage pas votre ordinateur

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.