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
.