Ludovic Frank - Développeur indépendant

Powershell et Linux, un petit retour expérience

ionicons-v5-k Ludovic Frank 9 sept. 2024
129 lectures Niveau : Confirmé

Bonjour, bonjour 🙂.

Merci d'avoir cliqué sur cet article 😁, pour le coup, il sera moins condensé que le dernier, cette semaine, on y va plus soft 😛.

De base moi, Powershell, je ne connais pas, je suis plus dans le monde des manchots tout ça... mais il y a quelques mois, j'ai du travailler avec Powershell ... et Linux.

Aujourd'hui, je vous propose de vous raconter un peu mon retour d’expérience sur cette aventure, prenez cet article comme une petite histoire d'un gars ne connaissant pas Powershell, mais qui a dû s'y mettre 🙂.

Microsoft 365 est omniprésent dans les entreprises

Et oui, c'est un fait, on ne peut pas passer à côté, la plupart de mes clients sont sur Microsoft 365. Du coup, il est difficile de passer au travers.

Powershell, ou comment communiquer avec Microsoft 365

Avec Powershell, il est possible de faire plein de choses sur le compte Microsoft 365, par exemple : lier un utilisateur à un groupe, ajouter un utilisateur, supprimer un utilisateur, etc.
Bref, vous avez compris l'idée.

Quand le besoin va plus loin

On va donc parler du projet sur lequel j'étais.

Il y a quelques mois, j'ai eu un projet rapide et intéressant, l'idée est simple, il fallait qu'un projet Symfony, qui tourne sous un serveur Linux soit capable de communiquer avec Microsoft 365.

Le client avait déjà fait développer un script Powershell par quelqu'un dont c'est le métier, son script était impeccable, mais il y avait un problème...

Le script était écrit pour Powershell 6, or sous Linux, seul Powershell 7 (Core) est disponible.

Comment réécrire un script Powershell 6 vers Powershell 7 sans compétences Powershell ?

(Je dis peut-être un peu trop "Powershell dans le titre de cette section, non ?)

Je n'avais donc pas le choix, il fallait que je reprenne le script pour qu'il fonctionne sous Powershell 7.

Pour cela, j'ai pris le script, la documentation Microsoft ainsi que l'intelligence artificielle, pas le choix. En me mettant au travail, j'ai commencé à voir quelles fonctions n'existant plus sous Powershell 7, et pour trouver les remplaçantes, j'ai utilisées ChatGPT au début, le problème, c'est que ChatGPT faisait parfois des erreurs, donc j'y suis allé pas-à-pas.

L'une des choses le plus déroutant est que sur Powershell 7 les fonctions "Get-Azure*" n'existent plus, du coup j'ai du utiliser des fonctions commençant par "get-MG*", je me souviens également que toute la partie "authentification”, bah oui pour communiquer avec 365, il faut s'authentifier au préalable, c'était un peu contraignant.

On Dockerise tout ça ? oui, mais pas sous Mac avec Apple Silicon

À l'époque, j'avais encore mon iMac 27 pouces de 2017 comme ordinateur principal, du coup, créer l'image Docker n'était pas bien compliqué.

On crée une image avec le projet Symfony, on y installe Powershell et Symfony peut faire des exécutions de "pwsh".

Bref, rien d'insurmontable.

Plus tard, j'ai dû revenir sur ce projet, mais maintenant, j'ai un Mac avec Apple Silicon, et le serveur sur lequel tourne ce projet lui, c'est bien évidemment un processeur Intel.

Donc, j'ajoute "--platform linux/amd64" à ma commande Docker, sauf que...

Crash lors de la création d'une image Docker avec powershell

Voilà ce qu'il se passe, j'imagine que derrière Docker utilise Rosetta 2 pour la tache, mais ça crash à ce moment-là.

Je ne me suis pas pris la tête, j'ai repris mon iMac 27 pouces de 2017 pour refaire l'image Docker.

Et du coup le projet tourne ?

On est brièvement repassé dessus 2 3 fois depuis, mais ça fait des mois que ça fonctionne : Symfony + Docker + Powershell.

Conclusion

Comme je vous l'ai dit, c'était un article tranquille cette semaine.
Un simple petit retour d'expérience, d'une expérience d'il y a quelques mois.
Ceci étant dit, Powershell sous Linux, ça marche très bien 🙂.

Passez une très bonne semaine 😁.