Partager via


Découvrir PowerShell

PowerShell est un interpréteur de commandes et un langage de script en un. PowerShell a démarré sur Windows pour faciliter l’automatisation des tâches d’administration. À présent, il exécute plusieurs plateformes et peut être utilisé pour différentes tâches.

Ce qui rend PowerShell unique est 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é ?

Au départ, PowerShell était Windows uniquement. Maintenant, il est multiplateforme et peut être utilisé pour différentes tâches telles que :

  • Gestion cloud. PowerShell peut être utilisé pour gérer les ressources cloud. Par exemple, vous pouvez récupérer des informations, 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/de déploiement continu.
  • Automatisez les tâches pour Active Directory et Exchange. Vous pouvez l’utiliser pour automatiser presque n’importe quelle tâche sur Windows, comme la création d’utilisateurs dans Active Directory et les boîtes aux lettres dans Exchange.

Qui utilise PowerShell ?

PowerShell est un outil puissant qui peut aider les personnes travaillant dans une multitude de rôles. Traditionnellement, PowerShell a été utilisé par les administrateurs système. Maintenant, il est utilisé par des personnes qui s’appellent DevOps, Cloud Ops, et même les développeurs.

Applets de commande PowerShell

PowerShell est fourni avec des centaines de commandes préinstallées. Les commandes PowerShell sont appelées applets de commande (prononcé command-lets).

Le nom de chaque applet de commande se compose d’une paire Verb-Noun . Par exemple : Get-Process. Cette convention d’affectation de noms facilite la compréhension de ce que fait l’applet de commande. Il facilite également la recherche de la commande que vous recherchez. Lorsque vous recherchez une applet de commande à utiliser, vous pouvez filtrer sur le verbe ou le nom.

Utilisation d’applets de commande pour explorer PowerShell

Lorsque vous prenez PowerShell pour la première fois, il peut se sentir intimidant, car il semble y avoir tellement à apprendre. PowerShell est conçu pour vous aider à apprendre un peu à la fois, car vous en avez besoin.

PowerShell inclut des applets de commande qui vous aident à découvrir PowerShell. À l’aide de ces trois applets de commande, vous pouvez découvrir les commandes disponibles, ce qu’elles font et les types sur lesquels ils fonctionnent.

  • Get-Verb. L’exécution de cette commande retourne une liste de verbes auxquels la plupart des commandes adhèrent. La réponse inclut une description de ce que font ces verbes. Étant donné que la plupart des commandes suivent cette convention d’affectation de noms, elle définit les attentes sur ce qu’une commande fait. Cette commande vous aide à sélectionner le verbe approprié et à nommer une commande lorsque vous créez vos propres commandes.
  • Get-Command. Cette commande récupère la liste de toutes les commandes installées sur votre ordinateur.
  • Get-Member. Il fonctionne sur la sortie basée sur l’objet et est en mesure de découvrir quels objets, propriétés et méthodes sont 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 décrivant différentes parties d’une commande.

À l’aide de ces commandes, vous pouvez découvrir presque tout ce dont vous avez besoin pour connaître PowerShell.

Verbe

Le verbe est un concept important dans PowerShell. Il s’agit d’une norme de nommage que la plupart des applets de commande suivent. Il s’agit également d’une norme de nommage que vous êtes censé suivre lorsque vous écrivez vos propres commandes. L’idée est que le verbe indique ce que vous essayez de faire, comme lire ou peut-être modifier des données. PowerShell a une liste standardisée de verbes. Pour obtenir la liste complète de tous les verbes possibles, utilisez l’applet Get-Verb de commande :

Get-Verb

L’applet de commande retourne une longue liste de verbes. La description fournit un contexte pour ce que le verbe est destiné à faire. Voici les premières lignes de 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 Get-Command de commande retourne la liste de toutes les commandes disponibles installées sur votre système. La liste peut être volumineuse. Vous pouvez limiter la quantité d’informations qui reviennent 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 l’utilisation de Get-Command différents paramètres. Le filtrage vous permet de rechercher des commandes qui ont certaines propriétés. Le paramètre Name vous permet de trouver 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

Que se passe-t-il si vous souhaitez trouver 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 le nom et le verbe

Il existe d’autres paramètres qui filtrent sur les valeurs de verbe et de nom. La partie verbe du nom d’une commande est la partie la plus à gauche. Le verbe doit être l’une des valeurs retournées par l’applet Get-Verb de commande. La partie la plus à droite d’une commande est la partie nom. Un nom peut être quelque chose.

  • Filtrez sur le verbe. Dans la commande Get-Process, la partie verbe est Get. Pour filtrer la partie verbe, utilisez le paramètre Verb .

    Get-Command -Verb 'Get'
    

    Cet exemple répertorie toutes les commandes qui utilisent le verbe Get.

  • Filtrez sur le nom. Dans la commande Get-Process, la partie nom est Process. Pour filtrer sur le nom, utilisez le paramètre Nom . L’exemple suivant retourne toutes les applets de commande qui ont des noms commençant par la lettre U.

    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 à partir d’un ou plusieurs objets. Vous pouvez également limiter le nombre d’éléments que vous récupérez. L’exemple suivant retourne les valeurs de propriété Name 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 avec lesquels pcommencent ProcessName .

    Get-Process | Where-Object {$_.ProcessName -like "p*"}
    

    L’applet Get-Process de commande retourne une collection d’objets de processus. Pour filtrer la réponse, dirigez la sortie vers Where-Object. Le piping signifie que deux commandes ou plus sont connectées via un caractère de canal | . La sortie d’une commande est envoyée en tant qu’entrée pour la commande suivante. Expression de filtre pour Where-Object utiliser l’opérateur -like pour faire correspondre les processus qui commencent par la lettre p.

Explorer des objets avec Get-Member

Une fois que vous avez trouvé l’applet de commande souhaitée, vous souhaitez en savoir plus sur la sortie qu’elle produit. L’applet Get-Member de commande affiche le type, les propriétés et les méthodes d’un objet. Diriger la sortie vers Get-Memberlaquelle vous souhaitez effectuer l’inspection .

Get-Process | Get-Member

Le résultat affiche le type retourné sous la forme 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 affiche uniquement quelques propriétés. L’exemple précédent a affiché les membres MemberTypeet Definition les Namemembres. Vous pouvez utiliser Select-Object pour spécifier les propriétés que vous souhaitez voir. Par exemple, vous souhaitez afficher uniquement les propriétés et Definition les Name propriétés :

Get-Process | Get-Member | Select-Object Name, Definition

Rechercher par type de paramètre

Get-Member nous a montré qu’il Get-Process retourne des objets de type Process . Le paramètre ParameterType de Get-Command peut être utilisé pour rechercher d’autres commandes qui prennent les objets Process 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 pour les commandes associées.

Ressources supplémentaires