16/12/2024

Commandes et SystèmePowerShell

Comment exécuter un script PowerShell sous Linux ?

I. Présentation

Nous vous parlons très souvent de PowerShell en étant sous Windows, mais il ne faut pas oublier que depuis quelques années, le langage de Microsoft est disponible sous Linux, mais aussi MacOS. Dans ce tutoriel, je vais vous expliquer comment exécuter un script PowerShell sous Linux.

PowerShell Core se base sur une version open source du framework .NET :  le .NET Core. La compatibilité avec les distributions Linux, dépends de la version de PowerShell utilisée : ce ne sera pas la même entre PowerShell 7.0 et PowerShell 7.1.

À l'heure où j'écris cet article, la dernière version stable est PowerShell 7.1.3 et elle est compatible avec Windows bien sûr, mais aussi avec diverses distributions Linux : Ubuntu, Debian, CentOS, RHEL, Fedora ou encore Alpine. Libre à vous d'utiliser une VM, une machine physique ou WSL sous Windows.

Je ne vais pas m'attarder sur l'installation de PowerShell sous Linux, car la méthode peut changer en fonction de la distribution que vous utilisez. Je vous invite à consulter la documentation de Microsoft, vous allez trouver votre bonheur !

II. Utiliser PowerShell sous Linux

Lorsque PowerShell est installé, vous pouvez ouvrir une console PowerShell à partir de votre shell Linux tout simplement avec la commande suivante :

pwsh

Ensuite, il ne reste plus qu'à exécuter vos commandes. L'avantage de ce mode interactif, c'est que vous bénéficiez de l'autocomplétion des commandes PowerShell. Il est à noter que les binaires Linux peuvent être appelés aussi directement depuis la console PowerShell.

Aperçu de la console PowerShell sous Linux

Quand vous avez terminé, pour retourner à votre shell, il suffira de faire :

exit

Attention, en ouvrant PowerShell de cette façon, vous ne pourrez pas exécuter de commandes qui nécessitent des privilèges élevés. Si vous désirez ouvrir une console PowerShell en tant qu'administrateur (si l'on peut dire ça comme ça), il faudra faire :

sudo pwsh

A utiliser avec précautions, bien sûr.

Néanmoins, si vous souhaitez seulement exécuter une commande, ce n'est pas nécessaire d'ouvrir une console... Il y a plus simple. En effet, nous pouvons utiliser l'argument -command ou -c.

Voici un exemple pour lister le contenu d'un répertoire :

pwsh -command "Get-Item /home/florian"

L'inconvénient, c'est qu'il n'y a pas l'autocomplétion, mais comme vous maîtrisez PowerShell ce n'est pas un problème. 😉

Dans le cas où la commande nécessite des privilèges élevés, il suffira d'ajouter "sudo" :

sudo pwsh -command "New-Item -Type File -Path /var/fichier.txt"

Intéressons-nous maintenant à l'exécution d'un script PowerShell sous Linux.

III. Exécuter un script PowerShell sous Linux

Commençons par créer un script... Pour cet exemple, ce script sera tout simple, nous allons récupérer la liste des utilisateurs de la machine Linux à l'aide du contenu du fichier "/etc/passwd".

Ce fichier contient plusieurs informations où les valeurs sont séparées par le caractère ":". On sait aussi que la première valeur correspond au nom de l'utilisateur. À partir de là, il ne reste plus qu'à récupérer la première valeur de chaque ligne.

Avant de créer le script, je vous invite à récupérer le chemin vers le binaire de PowerShell :

which pwsh

La valeur retournée devrait être :

/usr/bin/pwsh

On va utiliser cette valeur pour déclarer le shebang au début du script.

Désormais, nous sommes prêts à créer le script :

nano /home/florian/GetUser.ps1

On commence par ajouter le shebang sur la première ligne :

#! /usr/bin/pwsh

Puis, on ajoute la ligne qui va permettre de récupérer la liste des utilisateurs :

Get-Content "/etc/passwd" | Foreach-Object{ (($_).Split(":"))[0] }

En image, cela donne :

Un script PowerShell, sous Linux

Enregistrez le script... Maintenant, nous allons voir comment l'exécuter. Tout d'abord, comme n'importe quel script, il faut lui ajouter les droits d'exécution :

chmod +x /home/florian/GetUser.ps1

Comme nous avons précisé le shebang, Linux sait quel interpréteur de script il doit utiliser pour exécuter notre script. Il suffit donc de l'exécuter de cette façon :

./GetUser.ps1

Comme vous pouvez le voir sur la copie d'écran ci-dessous, nous obtenons bien la liste des utilisateurs de notre machine Linux.

On récupère la liste des utilisateurs de Linux avec PowerShell

Une autre manière d'exécuter un script PowerShell sous Linux consiste à appeler le binaire et lui indiquer le chemin du fichier via le paramètre -File ou -f :

pwsh -File "/home/florian/GetUser.ps1"

Sous Linux, la politique d'exécution des scripts PowerShell n'est pas prise en charge. La politique "Unrestricted" est appliquée et ne peut pas être modifiée, ce qui nous permet d'exécuter n'importe quel script.

Maintenant que vous savez comment exécuter un script PowerShell sous Linux, vous n'avez plus d'excuse ! 😉

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

1 commentaire sur “Comment exécuter un script PowerShell sous Linux ?

  • Bonjour Florian
    merci pour tes tuto très instructifs.
    Je voudrais savoir s’il y a des solutions open sources pour synchroniser les mots de passe des utilisateurs OpenLDAP et Active Directory.
    S’il y a en des solutions payantes comme MIM aussi je suis partant

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.