Découvrir PowerShell
PowerShell est à la fois un shell de ligne de commande et un langage de script. PowerShell a démarré sur Windows pour aider à automatiser les tâches administratives. Désormais, il s’exécute sur plusieurs plateformes et peut être utilisé pour diverses tâches.
Ce qui rend PowerShell unique est le fait qu’il accepte et retourne des objets .NET plutôt que du texte. Cette fonctionnalité facilite la connexion de différentes commandes dans un pipeline.
Pour quoi PowerShell peut-il être utilisé ?
L’usage de PowerShell est beaucoup plus répandu aujourd’hui qu’à l’époque où il était limité à Windows. Il est toujours utilisé pour l’automatisation des tâches Windows, mais peut désormais servir à des tâches telles que les suivantes :
- Gestion de cloud. PowerShell peut être utilisé pour gérer les ressources cloud. Vous pouvez par exemple récupérer des informations sur les ressources cloud, et mettre à jour ou déployer de nouvelles ressources.
- CI/CD. Il peut également être utilisé dans le cadre d’un pipeline d’intégration continue/déploiement continu.
- Automatiser les tâches pour Active Directory et Exchange. Vous pouvez l’utiliser pour automatiser quasiment toutes les tâches sur Windows, par exemple créer des utilisateurs dans Active Directory et des boîtes aux lettres dans Exchange.
Il existe beaucoup d’autres domaines d’utilisation, mais la liste précédente vous donne une idée du chemin parcouru par PowerShell.
Qui utilise PowerShell ?
PowerShell est un outil puissant qui peut aider les personnes occupant une multitude de rôles. Traditionnellement, PowerShell est utilisé par le rôle d’Administrateur système, mais il est aujourd’hui utilisé par des DevOps, des Cloud Ops et même des développeurs.
Applets de commande PowerShell
PowerShell est fourni avec des centaines de commandes préinstallées. Les commandes PowerShell sont appelées cmdlets (qui se prononce command-lets) ou applets de commande.
Le nom de chaque cmdlet est constitué d’une paire verbe-nom. Par exemple : Get-Process
. Cette convention de nommage permet de mieux comprendre ce que fait l’applet de commande. Elle facilite également la recherche de commande. Lorsque vous recherchez une applet de commande spécifique, vous pouvez filtrer sur le verbe ou le nom.
Utilisation des applets de commande pour explorer PowerShell
Lorsque vous débutez avec PowerShell, la courbe d’apprentissage peut paraître intimidante. PowerShell est conçu pour vous aider à apprendre de façon progressive, en fonction de vos besoins.
PowerShell comprend des applets de commande qui vous aident à vous familiariser avec lui. Grâce à ces trois cmdlets, vous pouvez découvrir les commandes disponibles, ce qu’elles font et les types sur lesquels elles opèrent.
Get-Verb
. L’exécution de cette commande retourne la liste des verbes auxquels la plupart des commandes adhèrent. La réponse inclut une description de ce que ces verbes font. Étant donné que la plupart des commandes suivent cette convention d’affectation de noms, cela vous permet d’avoir une idée de ce que fait une commande. Ceci vous permet de sélectionner la commande appropriée et aussi de savoir comment nommer une commande si vous deviez en créer une.Get-Command
. Cette commande récupère une liste de toutes les commandes installées sur votre ordinateur.Get-Member
. Elle opère sur une sortie basée sur les objets, et peut découvrir l’objet, les propriétés et les méthodes disponibles pour une commande.Get-Help
. L’appel de cette commande avec le nom d’une commande en tant qu’argument affiche une page d’aide qui décrit les différentes parties d’une commande.
Grâce à ces commandes, vous pouvez découvrir presque tout ce que vous devez savoir sur PowerShell.
Verbe
Le verbe est un concept important dans PowerShell. Il s’agit d’une norme de nommage suivie par la plupart des applets de commande. Vous êtes également censé la respecter lorsque vous écrivez vos propres commandes. L’idée est que le verbe indique ce que vous essayez de faire, par exemple lire des données ou les modifier. PowerShell dispose d’une liste normalisée de verbes. Pour obtenir la liste complète de tous les verbes possibles, utilisez l’applet de commande Get-Verb
:
Get-Verb
L’applet de commande retourne une longue liste de verbes. La Description fournit un contexte sur ce que le verbe est destiné à faire. Voici les premières lignes de la sortie :
Verb AliasPrefix Group Description
---- ----------- ----- -----------
Add a Common Adds a resource to a container, or attaches an item to another item
Clear cl Common Removes all the resources from a container but does not delete the container
Close cs Common Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy cp Common Copies a resource to another name or to another container
Enter et Common Specifies an action that allows the user to move into a resource
Exit ex Common Sets the current environment or context to the most recently used context
...
Rechercher des commandes avec Get-Command
L’applet de commande Get-Command
retourne la liste de toutes les commandes installées sur votre système. La liste que vous obtenez est assez longue. Vous pouvez limiter la quantité d’informations retournées en filtrant la réponse à l’aide de paramètres ou d’applets de commande d’assistance.
Filtrer sur le nom
Vous pouvez filtrer la sortie de Get-Command
à l’aide de différents paramètres. Le filtrage vous permet de rechercher des commandes qui ont certaines propriétés. Le paramètre Nom vous permet de rechercher une commande spécifique par nom.
Get-Command -Name Get-Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Management
Qu’en est-il si vous souhaitez rechercher toutes les commandes qui fonctionnent avec des processus ? Vous pouvez utiliser un caractère générique *
pour faire correspondre d’autres formes de la chaîne. Par exemple :
Get-Command -Name *-Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Debug-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Start-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Stop-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Wait-Process 7.0.0.0 Microsoft.PowerShell.Management
Filtrage sur un nom et un verbe
D’autres paramètres permettent de filtrer les valeurs de verbe et de nom. Le verbe est la partie la plus à gauche du nom d’une commande. Le verbe doit être l’une des valeurs retournées par l’applet de commande Get-Verb
. La partie la plus à droite d’une commande est la partie nom. Un nom peut être n’importe quoi.
Filtrer sur le verbe. Dans la commande
Get-Process
, la partie verbe estGet
. Pour filtrer la partie verbe, utilisez le paramètre Verbe.Get-Command -Verb 'Get'
Cet exemple répertorie toutes les commandes qui utilisent le verbe
Get
.Filtrer sur le nom. Dans la commande
Get-Process
, la partie nom estProcess
. Pour filtrer le nom, utilisez le paramètre Nom. L’exemple suivant retourne toutes les cmdlets dont les noms commencent par la lettreU
.Get-Command -Noun U*
En outre, vous pouvez combiner des paramètres pour affiner votre recherche, par exemple :
Get-Command -Verb Get -Noun U*
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-UICulture 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-Unique 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-Uptime 7.0.0.0 Microsoft.PowerShell.Utility
Utiliser des applets de commande d’assistance pour filtrer les résultats
Vous pouvez également utiliser d’autres applets de commande pour filtrer les résultats.
Select-Object
. Cette commande polyvalente vous permet de sélectionner des propriétés spécifiques d’un ou de plusieurs objets. Vous pouvez également limiter le nombre d’éléments qui vous sont retournés. L’exemple suivant retourne les valeurs de propriété Nom et Source pour les 5 premières commandes disponibles dans la session active.Get-Command | Select-Object -First 5 -Property Name, Source
Name Source ---- ------ Add-AppPackage Appx Add-AppPackageVolume Appx Add-AppProvisionedPackage Dism Add-AssertionOperator Pester Add-ProvisionedAppPackage Dism
Pour plus d’informations, consultez Select-Object.
Where-Object
. Cette applet de commande vous permet de filtrer les objets retournés en fonction des valeurs des propriétés. La commande prend une expression qui peut tester la valeur d’une propriété. L’exemple suivant retourne tous les processus oùProcessName
commence parp
.Get-Process | Where-Object {$_.ProcessName -like "p*"}
L’applet de commande
Get-Process
retourne une collection d’objets de processus. Pour filtrer la réponse, dirigez la sortie versWhere-Object
. Le terme diriger signifie que plusieurs commandes sont connectées par le biais d’un caractère de barre verticale|
. La sortie d’une commande est envoyée comme entrée de la commande suivante. L’expression de filtre pourWhere-Object
utilise l’opérateur-like
pour faire correspondre les processus qui commencent par la lettrep
.
Explorer les objets avec Get-Member
Une fois que vous avez trouvé l’applet de commande recherchée, vous souhaitez en savoir plus sur la sortie qu’elle génère. L’applet de commande Get-Member
affiche le type, les propriétés et les méthodes d’un objet. Dirigez la sortie que vous souhaitez inspecter vers Get-Member
.
Get-Process | Get-Member
Le résultat affiche le type retourné en tant que TypeName
et toutes les propriétés et méthodes de l’objet. Voici un extrait de ce résultat :
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Handles AliasProperty Handles = Handlecount
Name AliasProperty Name = ProcessName
...
À l’aide du paramètre MemberType, vous pouvez limiter les informations retournées.
Get-Process | Get-Member -MemberType Method
Par défaut, PowerShell n’affiche que quelques propriétés. L’exemple précédent affichait les membres Name
, MemberType
et Definition
. Vous pouvez utiliser Select-Object
pour spécifier les propriétés que vous souhaitez voir. Par exemple, vous ne souhaitez afficher que les propriétés Name
et Definition
:
Get-Process | Get-Member | Select-Object Name, Definition
Rechercher par type de paramètre
Get-Member
nous a montré que Get-Process
retourne des objets de type Processus. Le paramètre ParameterType de Get-Command
peut être utilisé pour rechercher d’autres commandes qui prennent des objets Processus comme entrée.
Get-Command -ParameterType Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Debug-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Enter-PSHostProcess 7.1.0.0 Microsoft.PowerShell.Core
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Get-PSHostProcessInfo 7.1.0.0 Microsoft.PowerShell.Core
Cmdlet Stop-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Wait-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Connaître le type de sortie d’une commande peut vous aider à affiner votre recherche de commandes associées.