Exécuter des scripts et définir la stratégie d’exécution dans Windows PowerShell

Effectué

Avant de commencer à modifier des scripts Windows PowerShell ou à créer les vôtres, vous devez savoir comment exécuter un script Windows PowerShell. Vous êtes peut-être familiarisé avec l’idée de double-cliquer sur un fichier exécutable ou de le sélectionner, puis d’appuyer sur Entrée pour l’exécuter, mais ce processus ne fonctionne pas pour les scripts Windows PowerShell.

L’un des problèmes de nombreux langages de script est qu’il est trop facile de les exécuter par inadvertance. Des utilisateurs peuvent exécuter un script accidentellement en double-cliquant dessus ou en le sélectionnant, puis en appuyant sur Entrée. Cette action est particulièrement problématique quand l’extension de fichier est masquée et que des programmes malveillants sont inclus dans une pièce jointe à un e-mail. Par exemple, un fichier joint nommé receipt.txt.vbs s’afficherait comme receipt.txt, et les utilisateurs l’exécuteraient accidentellement, pensant qu’il s’agit d’un simple fichier texte simple. Ce problème ne se pose pas avec des scripts Windows PowerShell en raison des actions requises pour les exécuter.

Intégration avec l’Explorateur de fichiers

Pour renforcer la sécurité des scripts Windows PowerShell, l’extension de fichier .ps1 est associée au Bloc-notes. Par conséquent, lorsque vous double-cliquez sur un fichier .ps1 ou le sélectionnez, puis appuyez sur Entrée, il s’ouvre dans le Bloc-notes. Ce paramètre signifie que les utilisateurs ne peuvent pas être incités à exécuter un script Windows PowerShell en double-cliquant dessus ou en le sélectionnant puis en appuyant sur Entrée.

Lorsque vous cliquez avec le bouton droit sur un script Windows PowerShell ou activez son menu contextuel, vous avez trois options :

  • Ouvrir. Cette option ouvre le script dans le Bloc-notes.
  • Exécuter avec PowerShell. Cette option exécute le script, mais l’invite Windows PowerShell ne reste pas ouverte après l’exécution du script.
  • Modifier. Cette option ouvre le script dans l’Environnement d’écriture de scripts intégré de Windows PowerShell.

Dans la plupart des cas, vous souhaitez que l’invite Windows PowerShell reste ouverte lorsque vous exécutez un script. Pour cela, exécutez le script à partir d’une invite de commandes Windows PowerShell déjà ouverte.

Exécution de scripts à l’invite de commandes PowerShell

Quand vous exécutez un fichier exécutable à une invite de commandes, vous pouvez entrer son nom pour l’exécuter dans le répertoire actif. Par exemple, lorsque le répertoire actif est C:\app, vous pouvez entrer app.exe pour exécuter C:\app\app.exe. Vous ne pouvez pas utiliser ce processus pour exécuter des scripts Windows PowerShell, car il n’effectue pas de recherche dans le répertoire actif.

Pour exécuter un script Windows PowerShell à l’invite de commandes Windows PowerShell, vous pouvez utiliser les méthodes suivantes :

  • Entrez le chemin d’accès complet au script, tel que C:\Scripts\MyScript.ps1.
  • Entrez un chemin d’accès relatif au script, tel que \Scripts\MyScript.ps1.
  • Référencez le répertoire actif, par exemple, .\MyScript.ps1.

Stratégie d’exécution de script

Vous pouvez contrôler si des scripts Windows PowerShell peuvent être exécutés sur des ordinateurs Windows. Vous faites cela en définissant la stratégie d’exécution sur l’ordinateur. La stratégie d’exécution par défaut sur un ordinateur varie en fonction de la version du système d’exploitation. Pour vérifier la configuration actuelle, vous pouvez utiliser la cmdlet Get-ExecutionPolicy.

Les options pour la stratégie d’exécution sont les suivantes :

  • Restricted. Aucun script ne peut être exécuté.
  • AllSigned. Des scripts ne peuvent être exécutés que s’ils sont signés numériquement.
  • RemoteSigned. Des scripts téléchargés ne peuvent être exécutés que s’ils sont signés numériquement.
  • Unrestricted. Tous les scripts peuvent être exécutés, mais une invite de confirmation s’affiche lors de l’exécution de scripts non signés qui sont téléchargés.
  • Bypass. Tous les scripts sont exécutés sans invite.

Notes

La définition de la stratégie d’exécution de script fournit un filet de sécurité qui peut empêcher l’exécution accidentelle de scripts non approuvés. Toutefois, la stratégie d’exécution peut toujours être modifiée.

Vous pouvez définir la stratégie d’exécution sur un ordinateur en utilisant la cmdlet Set-ExecutionPolicy. Toutefois, ce paramètre est difficile à gérer sur de nombreux ordinateurs. Quand vous configurez la stratégie d’exécution pour de nombreux ordinateurs, vous pouvez utiliser le paramètre de stratégie de groupe Computer Configuration\Policies\Administrative Templates\Windows Components\Windows PowerShell\Turn on Script Execution à la place du paramètre local.

Vous pouvez modifier la stratégie d’exécution pour une instance spécifique de Windows PowerShell. Ce paramètre est utile si la politique de l’organisation exige que la stratégie d’exécution soit définie comme Restricted, mais que vous devez encore exécuter des scripts occasionnellement. Pour modifier la stratégie d’exécution, exécutez PowerShell.exe avec le paramètre -ExecutionPolicy.

Powershell.exe -ExecutionPolicy ByPass

Si vous avez modifié un script téléchargé à partir d’Internet, le script dispose toujours des attributs qui l’identifient comme fichier téléchargé. Pour supprimer cet état d’un script, utilisez la cmdlet Unblock-File.