File cannot be loaded because running scripts is disabled on this system

Powershell_Strategy

File C:\Users\Thibault\Desktop\Untitled1.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies…

Les risques liés au scripting

Ce qui fait la force du scripting fait aussi sa faiblesse ; et le PowerShellne fait pas exception à la règle.

En effet, la facilité avec laquelle vous pouvez tout faire, soit en exécutant un script soit en tapant quelques lignes de commandes dans un prompt est à la fois une force mais peut rapidement vous mettre en difficultés si vous ne faîtes pas suffisamment attention à ce que vous faîtes.

Un script PowerShell peut vous rendre d’immenses services en accélérant ou en automatisant certains processus ou certaines tâches en 1 clic de souris. Mais un script provenant d’une personne mal intentionnée ou inexpérimentée peut également faire d’immenses dégâts sur votre système.

Heureusement, pour nous il existe des sécurités concernant l’utilisation de PowerShell.

De base, il existe 2 types de sécurités concernant l’utilisation de PowerShell.

  1. Pas d’exécution intempestive. Lorsque vous double-cliquez sur un fichier Powershell, il ne s’exécutera pas. En effet, les fichiers portant l’extension ps1 Powershell sont par défaut associés au Bloc-notes. Exit donc les fausses manipulations et l’exécution de scripts que vous n’auriez pas volontairement souhaité démarrer ? Qui n’a jamais exécuté un VBS en double-cliquant sur celui-ci alors qu’il souhaitait simplement le modifier…
  2. Une stratégie d’exécution. Il existe en effet une stratégie qui gère et régule l’exécution de script PowerShell sur un système Windows.

Changer la stratégie d’exécution PowerShell

Par défaut, un système Microsoft est configuré avec la stratégie la plus restrictive et bloque systématiquement l’exécution de tout script PowerShell. Mais, il est toujours possible d’exécuter des commandes via le prompt PowerShell. Pour éviter ce type de blocage et les messages d’erreurs qui vont avec, il est donc nécessaire de modifier la stratégie d’exécution PowerShell.

Error

Dans Powershell V1, il existe 4 types de configuration possibles :

  1. Restricted
  2. RemoteSigned
  3. AllSigned
  4. Unrestricted
StratégieDétails
RestrictedIl s'agit de la stratégie la plus restrictive (comme son nom l'indique) et c'est également celle qui est configurée par défaut sur un système Microsoft. Vous ne pourrez exécuter aucun script Powershell. Si vous tentez toutefois d'exécuter un script, vous serez confronté au message d'erreur suivant : Impossible de charger le fichier C:\XXXX.ps1, car l'exécution de scripts est désactivée sur ce système.
AllsignedIl s'agit de la stratégie la moins risquée. Elle vous permet d'exécuter tous les scripts qui ont été signés numériquement. Vous devrez bien sûr être en possession des certificats correspondant pour exécuter le script PowerShell souhaité.
RemoteSignedCette stratégie, très proche d'Allsigned, vous permet d'exécuter tous les scripts qui ont été créés localement sur le système. En revanche, pour tous les autres scripts, ils devront être signés numériquement. A mon sens, il s'agit du meilleur compromis sécurité / exécution scripts.
UnrestrictedComme vous le devinez très probablement, il s'agit de la sécurité la moins contraignante. Elle vous permet d'exécuter tout type de scripts PowerShell sans tenir compte de leur provenance. A noter qu'il y aura tout de même un avertissement de sécurité si vous tentez d'exécuter un script provenant d'Internet.

A noter que la version 2 de PowerShell apporte 2 stratégies supplémentaires :

  1. Bypass : aucun blocage, tout est exécuté.
  2. Undefined : aucune stratégie définie par l’utilisateur. Par défaut, il s’agira de la stratégie “Restricted“.

Vérifier et modifier votre stratégie d’exécution Powershell

Pour connaître, le type de stratégie appliquée à votre système il vous suffit d’exécuter la commande suivante :

Get-ExecutionPolicy

Get-ExecutionPolicy

Pour modifier, votre stratégie d’exécution il vous suffit de démarrer un prompt PowerShell en mode administrateur et utiliser la commande suivante :

Set-ExecutionPolicy "stratégie_choisie"

Set-ExecutionPolicy

Voilà, vous savez tout. 🙂

Vous pouvez désormais exécuter tous les scripts PowerShell que vous souhaitez… En toute connaissance de cause bien entendu.