WSL2 – Install Powershell module

WSL2-Logo

Après avoir installé PowerShell sur WSL, nous allons voir comment installer les modules. En effet, pour pouvoir manipuler les environnements Azure ou autre, les modules PowerShell sont indispensables.

Pour savoir comment installer PowerShell sur un environnement WSL, vous pouvez vous référer à l’article ci-dessous :

La distribution utilisée est “Ubuntu 20.04” pour cette démonstration.

CERTBOT-WSL-0010
Ubuntu 20.04

Dans cet exemple, nous allons installer les modules PowerShell pour Azure (Az).

Pour lancer PowerShell depuis WSL, il suffit d’exécuter la commande suivante :

pwsh
WSL-PS-ModulesAZ-0010
pwsh

Comme nous pouvons le constater, PowerShell vient d’être installé sur la distribution WSL et ne comporte pas de module à l’exception de ceux par défaut.

Get-Module -ListAvailable
WSL-PS-ModulesAZ-0020
Get-Module

Sommaire

Installation /mise à jour de NuGet

Le repo contenant les modules PowerShell (PowerShell Gallery) est géré par un package /provider nommé NuGet.

Vous pouvez par courir la galerie PowerShell et trouver les modules qui vous intéressent :

Nous allons commencer par vérifier que ce repo est bien installé sur notre machine :

Get-PackageProvider
WSL-PS-ModulesAZ-0030
Get-Module

Si cela n’était pas le cas, vous pouvez l’installer avec la commande suivante :

Install-PackageProvider -Name NuGet -Force

Installation des module AZ

Le module PowerShell AZ qui contient en réalité tous les modules pour manipuler Azure peut être consulté depuis la gallerie PowerShell :

L’installation des modules AZ est réalisée à l’aide de la commande ci-dessous.

Install-Module -Name Az -Scope AllUsers -Repository PSGallery -Force
WSL-PS-ModulesAZ-0040
Get-Module

Installation du module MSOnline

Un second exemple, avec l’installation du module “MSOnline“. Module permettant l’administration d’Office 365.

Install-Module -Name MSOnline -Scope AllUsers -Repository PSGallery -Force
WSL-PS-ModulesAZ-0040
Get-Module

Je ne vais pas installer tous les modules PowerShell disponibles, cependant l’ensemble des modules permettant l’administration des ressources Cloud et surtout utilisées pour l’industrialisation des déploiements sont présents.

Mise à jour des modules

Comme tout produit, les modules PowerShell peuvent /doivent être mis à jour.

Pour se faire, utiliser la commande ci-dessous :

Update-Module -Name MSOnline -Force
WSL-PS-ModulesAZ-0050
Update-Module

Comme nous pouvons le constater, les deux versions (ancienne et nouvelle) sont présentes. Lors de l’import du module, la dernière sera utilisée. Cependant il est possible en cas de problème de compatibilité entre vos scripts et la nouvelle version du module de supprimer la nouvelle version et d’utiliser l’ancienne.

Pour ce faire, suivez la même procédure que pour supprimer les anciennes versions, mais au lieu de supprimer la version antérieure, supprimer la version supérieure.

Suppression des anciennes versions

Comme expliqué dans le chapitre précédent, lors de la mise à jour d’un module, il est possible de supprimer l’ancienne version.

Pour se faire, il faut identifier le répertoire d’installation de module et supprimer le répertoire correspondant aux anciennes versions.

Pour se faire, s’appuyer sur l’exemple ci-dessous :

Get-Module -ListAvailable -Name MSOnline | Select-Object Name, ModuleBase, Version
rm -fr /root/.local/share/powershell/Modules/MSOnline/old-version

Conclusion

Voilà nous avons vu comment installer un module PowerShell sous WSL. La gestion est la même que sous un environnement Windows traditionnel. Le plus important à retenir est qu’il est possible d’utiliser PowerShell et les modules sous WSL /Linux.

Ceux-ci apportent bon nombre de possibilités pour mixer différents langages /outils d’industrialisation sous WSL ou Linux. Tout en gardant à l’esprit que certains outils ne sont pas ou difficilement utilisable avec Windows. Les agents Azure DevOps sous Linux peuvent exécuter les scripts PowerShell.

Laisser un commentaire

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