Microsoft PowerShell a été traditionnellement considéré comme un produit Windows uniquement, mais plus maintenant. Depuis PowerShell v6, toutes les fonctionnalités de PowerShell sont désormais disponibles sur plusieurs plates-formes, Linux étant le plus populaire.
Dans ce didacticiel, vous allez apprendre à démarrer à partir de zéro en installant PowerShell sur Ubuntu (les autres distributions Linux sont similaires), à exécuter des commandes et même à installer certains modules.
Commençons !
Prérequis
Ce tutoriel contiendra diverses démos. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants :
- Toute distribution Linux prise en charge :ce didacticiel utilise Peppermint 10, qui est basé sur Ubuntu 18.04 (LTS).
- Un compte avec un accès root.
Mettre à jour le référentiel de packages
Avant de passer à l'installation de PowerShell sur Linux, vous devez d'abord mettre à jour la liste des référentiels du gestionnaire de packages apt. Certaines distributions de Linux utilisent le gestionnaire de packages apt pour installer les packages apt; PowerShell en fait partie.
Pour vous assurer qu'apt peut trouver le package PowerShell et toute dépendance lors du téléchargement, vous devez d'abord mettre à jour la liste des référentiels de packages d'apt. Pour ce faire, exécutez [apt update](
.
sudo apt update
Installation de PowerShell sous Linux
Maintenant que vous avez mis à jour les référentiels de packages, il est temps d'installer PowerShell sur Linux. Étant donné que ce didacticiel utilise une distribution basée sur Ubuntu, vous disposez de deux manières différentes d'installer PowerShell. en utilisant des packages snap ou via le SDK .NET.
Installation de PowerShell via des packages Snap
Le moyen le plus simple d'installer PowerShell sur Ubuntu consiste à utiliser des snaps. Les snaps sont des packages qui fonctionnent sur plusieurs versions et distributions de Linux.
Pour installer PowerShell sur Linux via un package snap, ouvrez un terminal et exécutez le snap install
Commande Linux avec sudo
droit d'utiliser le nom de package snap de powershell
.
Par défaut, les packages snap ont une portée limitée pour des raisons de sécurité. Spécifier le
--classic
Le paramètre vous permet d'apporter des modifications à votre système en dehors du bac à sable de sécurité.
sudo snap install powershell --classic
Installation de PowerShell via le SDK .NET
1. Parfois, vous constaterez que le package snap PowerShell ne contient pas la dernière version de PowerShell. Lorsque cela se produit, vous pouvez toujours opter pour la route SDK .NET qui sera toujours mise à jour.
PowerShell est fourni avec .NET Core. Ainsi, lorsque vous installez le SDK .NET, vous obtenez également PowerShell !
Téléchargez et installez le dernier SDK .NET disponible en exécutant la commande ci-dessous à l'aide du apt
directeur chargé d'emballage. Au moment d'écrire ces lignes, le dernier package SDK .NET disponible est la v5.0.8. Vous pouvez vérifier la dernière version disponible ici.
sudo apt install dotnet-sdk-5.0
2. Maintenant, installez PowerShell via le dotnet
application utilisant dotnet tool install
. Le dotnet tool
La commande spécifie un package NuGet dans lequel PowerShell est conditionné.
En précisant le --global
option, dotnet
installe le package PowerShell sur ~\.dotnet\tools et s'assure que le répertoire se trouve dans le système PATH afin que vous puissiez l'exécuter de n'importe où.
dotnet tool install --global PowerShell
Exécuter des commandes PowerShell de base sous Linux
Maintenant que PowerShell est installé sur Linux, que se passe-t-il ensuite ? Commençons par exécuter quelques commandes de base. Pour démarrer PowerShell, exécutez simplement pwsh
et vous serez déposé dans la console interactive PowerShell.
En tant que langage de script multiplateforme, PowerShell sur Linux prend en charge toutes les commandes communément connues de CMD et du shell de ligne de commande de Linux, telles que sudo apt update
. Pas besoin d'ouvrir un terminal Bash !
À partir de maintenant, vous pouvez exécuter des milliers de commandes PowerShell intégrées. Pendant que vous y êtes, vérifiez quelle version de PowerShell est installée en utilisant $PSVersionTable
. Vous devriez voir que la PSEdition s'affiche comme Core et Plateforme est Unix .
Une fois que vous avez terminé dans la console PowerShell, quittez en exécutant le exit
commande. Cette commande vous ramènera dans votre terminal Bash.
Limitations de PowerShell sur Linux
Ce n'est pas parce que vous pouvez installer PowerShell et y exécuter des commandes que vous pouvez faire tout ce qui est possible sous Windows. Après tout, Linux étant Open Source, est un système d'exploitation complètement différent et certaines commandes ne seront pas disponibles pour les fonctionnalités non disponibles dans Linux.
Windows -ne Linux
Par exemple, puisque Linux n'a pas de registre, vous ne verrez aucun lecteur PowerShell. Le Get-PSDrive
L'applet de commande sera toujours disponible, mais elle ne renverra que les volumes de stockage Linux montés et les autres lecteurs PS standard. Vous pouvez voir un exemple ci-dessous.
Get-PSDrive | Format-Table -Auto
Contrairement à Microsoft Windows, Linux n'a ni Common Information Model (CIM) ni Windows Management Instrumentation (WMI). Ces deux éléments aident à fournir des informations sur la gestion des périphériques et des applications au système d'exploitation Windows.
Vous pouvez voir ci-dessous que l'applet de commande Windows PowerShell Get-CimInstance
n'est pas disponible dans PowerShell sous Linux.
Get-CimInstance -ClassName Win32_BIOS
Mais si vous essayez d'utiliser Get-CimInstance
dans Windows PowerShell, vous verrez ci-dessous que cela fonctionne comme prévu.
Aucune tâche planifiée
Un autre inconvénient de PowerShell sous Linux est le manque de tâches planifiées. Les tâches planifiées sont une fonctionnalité pratique de Windows PowerShell qui vous permet d'exécuter des tâches en arrière-plan via le planificateur de tâches Windows.
Pour créer une tâche planifiée dans Windows PowerShell, vous devez vous enregistrer la tâche via le Register-ScheduledJob
applet de commande. Vous verrez un exemple de copie de certains classeurs Excel qui fonctionne dans Windows PowerShell ci-dessous. Vous remarquerez que le Register-ScheduledJob
applet de commande introuvable.
Bien que vous ne puissiez pas planifier une tâche, vous pouvez toujours invoquer des tâches en arrière-plan à l'aide du Start-Job
commande. Le Start-Job
L'applet de commande vous permet d'exécuter des tâches en arrière-plan dans PowerShell pour exécuter une tâche sans interaction avec la session en cours.
Peut-être souhaitez-vous lister tous les fichiers dans /var/backups mais faites-le en arrière-plan. Vous pouvez créer la commande à exécuter dans un ScriptBlock
et créez une tâche appelée GetAllBackupFiles
invoquer avec Start-Job
, comme indiqué ci-dessous.
Start-Job -Name GetAllBackupFiles -ScriptBlock {Get-ChildItem /var/backups -Recurse}
Une fois que le travail en arrière-plan démarre, vous pouvez alors recevoir la sortie de ce travail en utilisant le Retrieve-Job
applet de commande en spécifiant le -Name
que vous avez fourni lors de son démarrage.
Retrieve-Job -Name GetAllBackupFiles
Travailler avec les modules PowerShell sous Linux
Un concept important dans Windows PowerShell est le module PowerShell. Les modules PowerShell sont des groupes de commandes construits sous forme de "packages" construits à la fois par Microsoft et via la communauté PowerShell.
Rechercher des modules installés
Par défaut, PowerShell sous Linux, comme Windows, installe divers modules. Trouvez tous ces modules en exécutant le Get-Module
commande, comme indiqué ci-dessous. Le ListAvailable
le paramètre indique Get-Module
pour retourner tous modules sur le système de fichiers ; pas seulement des modules chargés.
Get-Module -ListAvailable
Vous pouvez voir ci-dessous que le Pester le module est installé dans /root/.local/share/powershell/Modules qui est l'emplacement de l'utilisateur pour les modules PowerShell. Vous apprendrez comment installer des modules dans une prochaine section.
Vous pouvez voir chaque emplacement pour installer les modules en regardant le PSModulePath
variable d'environnement, comme indiqué ci-dessous. Depuis la valeur de $env:PSModulePath
est une chaîne, le tutoriel utilise le split
opérateur pour diviser la chaîne en deux-points (et non en points-virgules comme Windows) pour afficher chaque chemin sur une ligne différente.
$env:PSModulePath -split ':'
Installer des modules PowerShell sous Linux
Même si PowerShell sur Linux est livré avec divers modules déjà installés, il est probable que vous ayez besoin de plus de fonctionnalités. Lorsque cela se produit, vous pouvez tirer parti de la galerie PowerShell. La galerie PowerShell est un référentiel de milliers de modules qui fonctionnent à la fois sous Windows et Linux.
Utilisation du Install-Module
cmdlet, vous pouvez installer des modules sur Linux comme vous le pouvez sur Windows. Mais d'abord, vous devez trouver le module que vous recherchez en utilisant Find-Module
.
Supposons que vous souhaitiez exécuter des tests Pesters en utilisant le framework de test Pester populaire. Pester est emballé dans un module. Vérifiez si le module Pester est disponible dans la PowerShell Gallery en utilisant le Find-Module
applet de commande.
Find-Module Pester
Vous pouvez voir ci-dessous que Find-Module
trouvé le module Pester disponible.
Une fois que vous avez vérifié que le module Pester est disponible, installez maintenant le module en utilisant le Install-Module
applet de commande spécifiant le Name
du module.
Install-Module -Name Pester
Lorsque vous exécutez Install-Module
, PowerShell vous demandera un référentiel non approuvé, car le référentiel est marqué comme non approuvé. Pour les tests, cet avertissement n'a rien d'inquiétant, alors tapez A pour confirmer.
Une fois le module installé, lancez maintenant le Get-InstalledModule
cmdlet et vous verrez que Pester a été installé et ses commandes sont maintenant disponibles.
Vous le verrez également en utilisant le Get-Command
applet de commande, vous pouvez également trouver toutes les commandes à l'intérieur du Pester
module, comme indiqué ci-dessous.
Get-Command -Module Pester
Exécuter des scripts PowerShell à partir de Bash
Pour conclure ce didacticiel, terminons par l'exécution de scripts PowerShell à partir de Bash. Tout au long de ce didacticiel, vous avez exécuté de manière interactive des commandes PowerShell dans une console PowerShell. Si vous avez un script PowerShell que vous devez exécuter, il n'est pas nécessaire de vous rendre dans la console PowerShell. Au lieu de cela, vous pouvez exécuter le script directement depuis Bash.
Pour démontrer l'exécution d'un script PowerShell à partir de Bash, ouvrez votre éditeur de texte Linux préféré, collez la commande suivante et enregistrez le fichier sous DrivesInformation.ps1 . Ce script énumérera simplement tous les lecteurs PS.
Get-PSDrive
Dans votre terminal Bash, au lieu d'exécuter pwsh
, en appuyant sur Entrée, puis en exécutant le script à l'intérieur de la console PowerShell, appelez le script directement à partir de Bash. Pour ce faire, exécutez pwsh
à nouveau, mais cette fois, spécifiez le script PowerShell que vous venez de créer, comme indiqué ci-dessous.
Vous verrez que vous recevez la même sortie que dans la session PowerShell interactive directement dans votre terminal Bash.
pwsh /home/tex/DrivesInformation.ps1
Conclusion
Vous devriez maintenant avoir un bon départ pour exécuter PowerShell sous Linux ! C'est maintenant à vous de commencer à en savoir plus sur PowerShell et à automatiser tout ce que vous pouvez !