Partager via


Chapitre 2 - Le système d’aide

Dans une expérience conçue pour évaluer la compétence dans PowerShell, deux groupes distincts de professionnels de l’informatique ( débutants et experts) ont d’abord reçu un examen écrit sans accès à un ordinateur. Étonnamment, les scores de test ont indiqué des compétences comparables dans les deux groupes. Un test ultérieur a ensuite été administré, en mettant en miroir le premier mais avec une différence clé : les participants avaient accès à un ordinateur hors connexion équipé de PowerShell. Les résultats ont révélé un écart significatif entre les deux groupes cette fois.

Quels facteurs ont contribué aux résultats observés entre les deux évaluations ?

Les experts ne connaissent pas toujours les réponses, mais ils savent comment déterminer les réponses.

Les résultats observés dans les résultats des deux tests étaient parce que les experts ne mémorisent pas des milliers de commandes PowerShell. Au lieu de cela, ils excellent à l’utilisation du système d’aide dans PowerShell, ce qui leur permet de découvrir et d’apprendre à utiliser des commandes si nécessaire.

Devenir compétent avec le système d’aide est la clé du succès avec PowerShell.

J’ai entendu Jeffrey Snover, le créateur de PowerShell, partager une histoire similaire à plusieurs reprises.

Découvrabilité

Les commandes compilées dans PowerShell sont appelées applets de commande, prononcées comme « command-let », et non « CMD-let ». La convention d’affectation de noms pour les cmdlets suit un format verbe-nom singulier afin de les rendre facilement détectables. Par exemple, Get-Process est l’applet de commande pour déterminer les processus en cours d’exécution et Get-Service est l’applet de commande pour récupérer une liste de services. Les fonctions, également appelées applets de commande de script et alias, sont d’autres types de commandes PowerShell présentées plus loin dans ce livre. Le terme « Commande PowerShell » décrit n’importe quelle commande dans PowerShell, qu’il s’agisse d’une applet de commande, d’une fonction ou d’un alias.

Vous pouvez également exécuter des commandes natives du système d’exploitation à partir de PowerShell, telles que des programmes de ligne de commande traditionnels tels que ping.exe et ipconfig.exe.

Les trois applets de commande principales dans PowerShell

  • Get-Help
  • Get-Command
  • Get-Member (couvert au chapitre 3)

On me demande souvent : « Comment déterminer quelles commandes sont dans PowerShell ? ». Les Get-Help et les Get-Command sont des ressources précieuses pour découvrir et comprendre les commandes dans PowerShell.

Get-Help

La première chose que vous devez savoir sur le système d’aide dans PowerShell consiste à utiliser l’applet de commande Get-Help.

Get-Help est une commande multi-usage qui vous permet d’apprendre à utiliser des commandes une fois que vous les trouvez. Vous pouvez également utiliser Get-Help pour localiser des commandes, mais de manière différente et plus indirecte par rapport à Get-Command.

Lorsque vous utilisez Get-Help pour localiser des commandes, il effectue initialement une recherche de caractères génériques pour les noms de commandes en fonction de votre entrée. Si cela ne trouve aucune correspondance, il effectue une recherche complète en texte intégral dans tous les articles d’aide PowerShell sur votre système. Si cela ne trouve pas non plus de résultats, il retourne une erreur.

Voici comment utiliser Get-Help pour afficher le contenu d’aide de l’applet de commande Get-Help.

Get-Help -Name Get-Help

À compter de PowerShell version 3.0, le contenu d’aide n’est pas préinstallé avec le système d’exploitation. Lorsque vous exécutez Get-Help pour la première fois, un message vous demande si vous souhaitez télécharger les fichiers d’aide PowerShell sur votre ordinateur.

Répondre Oui en appuyant sur Y exécute la cmdlet Update-Help et télécharge le contenu d’aide.

Do you want to run Update-Help?
The Update-Help cmdlet downloads the most current Help files for Windows
PowerShell modules, and installs them on your computer. For more information
about the Update-Help cmdlet, see
https:/go.microsoft.com/fwlink/?LinkId=210614.
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

Si vous ne recevez pas ce message, exécutez Update-Help à partir d’une session PowerShell avec élévation de privilèges s’exécutant en tant qu’administrateur.

Une fois la mise à jour terminée, l’article d’aide s’affiche.

Prenez un moment pour exécuter l’exemple sur votre ordinateur, passer en revue la sortie et observer comment le système d’aide organise les informations.

  • NOM
  • SYNOPSIS
  • SYNTAXE
  • Description
  • LIENS CONNEXES
  • Remarques

Lorsque vous passez en revue la sortie, gardez à l’esprit que les articles d’aide contiennent souvent une grande quantité d’informations et que ce que vous voyez par défaut n’est pas l’intégralité de l’article d’aide.

Paramètres

Lorsque vous exécutez une commande dans PowerShell, vous devrez peut-être fournir des informations supplémentaires ou une entrée à la commande. Les paramètres vous permettent de spécifier des options et des arguments qui modifient le comportement d’une commande. La section SYNTAX de chaque article d’aide décrit les paramètres disponibles pour la commande.

Get-Help a plusieurs paramètres que vous pouvez spécifier pour retourner l’intégralité de l’article d’aide ou d’un sous-ensemble pour une commande. Pour afficher tous les paramètres disponibles pour Get-Help, consultez la section SYNTAX de son article d’aide, comme illustré dans l’exemple suivant.

...
SYNTAX
    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Full]
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] -Detailed
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] -Examples
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] -Online [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] -Parameter <System.String> [-Path <System.String>]
    [-Role <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] [-Path <System.String>] [-Role <System.String[]>]
    -ShowWindow [<CommonParameters>]
...

Jeux de paramètres

Lorsque vous passez en revue la section SYNTAX pour Get-Help, notez que les informations semblent être répétées six fois. Chacun de ces blocs est un jeu de paramètres individuel, indiquant que l’applet de commande Get-Help comporte six ensembles distincts de paramètres. Un examen plus approfondi révèle que chaque jeu de paramètres contient au moins un paramètre unique, ce qui le rend différent des autres.

Les jeux de paramètres s’excluent mutuellement. Une fois que vous avez spécifié un paramètre unique qui existe uniquement dans un jeu de paramètres, PowerShell vous limite à l’utilisation des paramètres contenus dans ce jeu de paramètres. Par exemple, vous ne pouvez pas utiliser les paramètres complets et détaillés de Get-Help ensemble, car ils appartiennent à différents jeux de paramètres.

Chacun des paramètres suivants appartient à un jeu de paramètres différent pour l’applet de commande Get-Help.

  • Complet
  • Détaillé
  • Exemples
  • En ligne
  • Paramètre
  • AfficherFenêtre

Syntaxe de la commande

Si vous débutez avec PowerShell, comprendre les informations énigmatiques (caractérisées par des crochets carrés et angulaires) dans la section SYNTAX peut sembler accablant. Toutefois, l’apprentissage de ces éléments de syntaxe est essentiel pour devenir compétent avec PowerShell. Plus vous utilisez souvent le système d’aide PowerShell, plus il devient facile de mémoriser toutes les nuances.

Affichez la syntaxe de l’applet de commande Get-EventLog.

Get-Help Get-EventLog

La sortie suivante montre la partie pertinente de l’article d’aide.

...
SYNTAX
    Get-EventLog [-LogName] <System.String> [[-InstanceId]
    <System.Int64[]>] [-After <System.DateTime>] [-AsBaseObject] [-Before
    <System.DateTime>] [-ComputerName <System.String[]>] [-EntryType {Error
    | Information | FailureAudit | SuccessAudit | Warning}] [-Index
    <System.Int32[]>] [-Message <System.String>] [-Newest <System.Int32>]
    [-Source <System.String[]>] [-UserName <System.String[]>]
    [<CommonParameters>]

    Get-EventLog [-AsString] [-ComputerName <System.String[]>] [-List]
    [<CommonParameters>]
...

Les informations de syntaxe incluent des paires de crochets ([]). En fonction de leur utilisation, ces crochets servent deux objectifs différents.

  • Les éléments placés entre crochets sont facultatifs.
  • Un ensemble vide de crochets suivant un type de données, tel que <string[]>, indique que le paramètre peut accepter plusieurs valeurs passées en tant que tableau ou objet de collection.

Paramètres positionnels

Certaines applets de commande sont conçues pour accepter des paramètres positionnels. Les paramètres positionnels vous permettent de fournir une valeur sans spécifier le nom du paramètre. Lorsque vous utilisez un paramètre positionnement, vous devez spécifier sa valeur à la position correcte sur la ligne de commande. Vous trouverez les informations de position d’un paramètre dans la section PARAMETERS de l’article d’aide d’une commande. Lorsque vous spécifiez explicitement des noms de paramètres, vous pouvez utiliser les paramètres dans n’importe quel ordre.

Pour l’applet de commande Get-EventLog, le premier paramètre du premier jeu de paramètres est LogName. LogName est placé entre crochets, indiquant qu’il s’agit d’un paramètre positionnel.

Get-EventLog [-LogName] <System.String>

Étant donné que LogName est un paramètre positionnel, vous pouvez le spécifier par nom ou position. Selon les crochets qui suivent le nom du paramètre, la valeur de LogName doit être une seule chaîne. L’absence de crochets englobant le nom du paramètre et le type de données indique que LogName est un paramètre obligatoire dans ce jeu de paramètres particulier.

Le deuxième paramètre de ce jeu de paramètres est InstanceId. Le nom du paramètre et le type de données sont entièrement placés entre crochets, ce qui signifie que InstanceId est un paramètre facultatif.

[[-InstanceId] <System.Int64[]>]

En outre, InstanceId a sa propre paire de crochets, indiquant qu’il s’agit d’un paramètre positionnel similaire au paramètre LogName. Après le type de données, un ensemble vide de crochets implique que InstanceId peut accepter plusieurs valeurs.

Changer de paramètres

Un paramètre qui ne nécessite pas de valeur est appelé paramètre de commutateur. Vous pouvez facilement identifier les paramètres de commutateur, car il n’existe aucun type de données suivant le nom du paramètre. Lorsque vous spécifiez un paramètre de commutateur, sa valeur est true. Lorsque vous ne spécifiez pas de paramètre de commutateur, sa valeur est false.

Le deuxième jeu de paramètres inclut un paramètre List, qui est un paramètre switch. Lorsque vous spécifiez le paramètre List, il retourne une liste des journaux d’événements sur l’ordinateur local.

[-List]

Une approche simplifiée de la syntaxe

Il existe une méthode plus conviviale pour obtenir les mêmes informations que la syntaxe de commande cryptique pour certaines commandes, sauf en anglais brut. PowerShell retourne l’article d’aide complet lors de l’utilisation de Get-Help avec le paramètre Full, ce qui facilite la compréhension de l’utilisation d’une commande.

Get-Help -Name Get-Help -Full

Prenez un moment pour exécuter l’exemple sur votre ordinateur, passer en revue la sortie et observer comment le système d’aide organise les informations.

  • NOM
  • SYNOPSIS
  • SYNTAXE
  • Description
  • PARAMÈTRES
  • ENTRÉES
  • SORTIES
  • REMARQUES
  • EXEMPLES
  • LIENS CONNEXES

En spécifiant le paramètre Full avec l’applet de commande Get-Help, la sortie comprend plusieurs sections supplémentaires. Parmi ces sections, PARAMETERS fournit souvent une explication détaillée de chaque paramètre. Toutefois, l’étendue de ces informations varie en fonction de la commande spécifique que vous examinez.

...
    -Detailed <System.Management.Automation.SwitchParameter>
        Adds parameter descriptions and examples to the basic help display.
        This parameter is effective only when the help files are installed
        on the computer. It has no effect on displays of conceptual ( About_
        ) help.

        Required?                    true
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false

    -Examples <System.Management.Automation.SwitchParameter>
        Displays only the name, synopsis, and examples. This parameter is
        effective only when the help files are installed on the computer. It
        has no effect on displays of conceptual ( About_ ) help.

        Required?                    true
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false

    -Full <System.Management.Automation.SwitchParameter>
        Displays the entire help article for a cmdlet. Full includes
        parameter descriptions and attributes, examples, input and output
        object types, and additional notes.

        This parameter is effective only when the help files are installed
        on the computer. It has no effect on displays of conceptual ( About_
        ) help.

        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false
...

Lorsque vous avez exécuté la commande précédente pour afficher l’aide de la commande Get-Help, vous avez probablement remarqué que la sortie défilait trop rapidement pour pouvoir la lire.

Si vous utilisez la console PowerShell, le terminal Windows ou VS Code et que vous devez afficher un article d’aide, la fonction help peut être utile. Il canalise la sortie de Get-Help à more.com, affichant une page de contenu d’aide à la fois. Je recommande d’utiliser la fonction help au lieu de l’applet de commande Get-Help, car elle offre une meilleure expérience utilisateur et elle est moins à taper.

Remarque

L’ISE ne prend pas en charge l’utilisation de more.com. L’exécution de help fonctionne de la même façon que Get-Help.

Exécutez chacune des commandes suivantes dans PowerShell sur votre ordinateur.

Get-Help -Name Get-Help -Full
help -Name Get-Help -Full
help Get-Help -Full

Avez-vous observé des variations dans la sortie lorsque vous avez exécuté les commandes précédentes ?

Dans l’exemple précédent, la première ligne utilise l’applet de commande Get-Help, la deuxième utilise la fonction help et la troisième ligne omet le paramètre Name lors de l’utilisation de la fonction help. Étant donné que Name est un paramètre positionnel, le troisième exemple tire parti de sa position au lieu d’indiquer explicitement le nom du paramètre.

La différence est que les deux dernières commandes affichent leur sortie une page à la fois. Lorsque vous utilisez la fonction help, appuyez sur la Barre d’espace pour afficher la page suivante du contenu ou sur Q pour quitter. Si vous devez arrêter une commande s’exécutant de manière interactive dans PowerShell, appuyez sur Ctrl+C.

Pour trouver rapidement des informations sur un paramètre spécifique, utilisez le paramètre Paramètre. Cette approche retourne du contenu contenant uniquement les informations spécifiques aux paramètres, plutôt que l’intégralité de l’article d’aide. Il s’agit du moyen le plus simple de trouver des informations sur un paramètre spécifique.

L’exemple suivant utilise la fonction help avec le paramètre Parameter pour renvoyer des informations à partir de l’article d’aide pour le paramètre Name de Get-Help.

help Get-Help -Parameter Name

Les informations d’aide indiquent que le paramètre Name est positionnel et doit être spécifié dans la première position (position zéro) lorsqu’il est utilisé positionnellement.

-Name <System.String>
    Gets help about the specified command or concept. Enter the name of a
    cmdlet, function, provider, script, or workflow, such as `Get-Member`,
    a conceptual article name, such as `about_Objects`, or an alias, such
    as `ls`. Wildcard characters are permitted in cmdlet and provider
    names, but you can't use wildcard characters to find the names of
    function help and script help articles.

    To get help for a script that isn't located in a path that's listed in
    the `$env:Path` environment variable, type the script's path and file
    name.

    If you enter the exact name of a help article, `Get-Help` displays the
    article contents.

    If you enter a word or word pattern that appears in several help
    article titles, `Get-Help` displays a list of the matching titles.

    If you enter any text that doesn't match any help article titles,
    `Get-Help` displays a list of articles that include that text in their
    contents.

    The names of conceptual articles, such as `about_Objects`, must be
    entered in English, even in non-English versions of PowerShell.

    Required?                    false
    Position?                    0
    Default value                None
    Accept pipeline input?       True (ByPropertyName)
    Accept wildcard characters?  true

Le paramètre Name attend une valeur de chaîne identifiée par le type de données <String> en regard du nom du paramètre.

Il existe plusieurs autres paramètres que vous pouvez spécifier avec Get-Help pour retourner un sous-ensemble d’un article d’aide. Pour voir comment ils fonctionnent, exécutez les commandes suivantes sur votre ordinateur.

Get-Help -Name Get-Command -Full
Get-Help -Name Get-Command -Detailed
Get-Help -Name Get-Command -Examples
Get-Help -Name Get-Command -Online
Get-Help -Name Get-Command -Parameter Noun
Get-Help -Name Get-Command -ShowWindow

En général, j’utilise help <command name> avec le paramètre Full ou Online. Si vous n’avez qu’un intérêt dans les exemples, utilisez le paramètre Examples. Si vous n’avez qu’un intérêt dans un paramètre spécifique, utilisez le paramètre Paramètre.

Lorsque vous utilisez le paramètre ShowWindow, il affiche le contenu d’aide dans une fenêtre pouvant faire l’objet d’une recherche distincte. Vous pouvez déplacer cette fenêtre vers un autre moniteur si vous avez plusieurs moniteurs. Toutefois, le paramètre ShowWindow a un bogue connu qui peut l’empêcher d’afficher l’intégralité de l’article d’aide. Le paramètre ShowWindow nécessite également un système d’exploitation avec une interface utilisateur graphique (GUI). Elle retourne une erreur lorsque vous tentez de l’utiliser sur Windows Server Core.

Si vous avez accès à Internet, vous pouvez utiliser le paramètre Online à la place. Le paramètre Online ouvre l’article d’aide dans votre navigateur web par défaut. Le contenu en ligne est le contenu le plus à jour. Le navigateur vous permet de rechercher le contenu de l’aide et d’afficher d’autres articles d’aide connexes.

Remarque

Le paramètre Online n’est pas pris en charge pour les articles About.

help Get-Command -Online

Recherche de commandes avec Get-Help

Pour rechercher des commandes avec Get-Help, spécifiez un terme de recherche entouré de caractères génériques astérisques (*) pour la valeur du paramètre Name. L'exemple suivant utilise le paramètre Name de manière positionnelle.

help *process*
Name                              Category  Module                    Synops
----                              --------  ------                    ------
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Con...
Exit-PSHostProcess                Cmdlet    Microsoft.PowerShell.Core Clo...
Get-PSHostProcessInfo             Cmdlet    Microsoft.PowerShell.Core Get...
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Deb...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Get...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Sta...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Sto...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Wai...
Invoke-LapsPolicyProcessing       Cmdlet    LAPS                      Inv...
ConvertTo-ProcessMitigationPolicy Cmdlet    ProcessMitigations        Con...
Get-ProcessMitigation             Cmdlet    ProcessMitigations        Get...
Set-ProcessMitigation             Cmdlet    ProcessMitigations        Set...

Dans ce scénario, vous n’êtes pas obligé d’ajouter les caractères génériques *. Si Get-Help ne trouve pas de commande correspondant à la valeur que vous avez fournie, elle effectue une recherche en texte intégral pour cette valeur. L’exemple suivant produit les mêmes résultats que la spécification du caractère générique * sur chaque extrémité de process.

help process

Lorsque vous spécifiez un caractère générique dans la valeur, Get-Help recherche uniquement les commandes qui correspondent au modèle que vous avez fourni. Il n’effectue pas de recherche en texte intégral. La commande suivante ne retourne aucun résultat.

help pr*cess

PowerShell génère une erreur si vous spécifiez une valeur commençant par un tiret sans l’inclure entre guillemets, car il l’interprète comme un nom de paramètre. Aucun nom de paramètre n’existe pour l’applet de commande Get-Help.

help -process

Si vous tentez de rechercher des commandes qui se terminent par -process, vous devez ajouter un * au début de la valeur.

help *-process

Lorsque vous recherchez des commandes PowerShell avec Get-Help, il est préférable d’être vague plutôt que trop spécifique.

Lorsque vous avez recherché process précédemment, les résultats ont retourné uniquement les commandes incluant process dans leur nom. Mais si vous recherchez processes, il ne trouve aucune correspondance pour les noms de commandes. Comme indiqué précédemment, lorsque l’aide ne trouve aucune correspondance, elle effectue une recherche complète en texte intégral de chaque article d’aide sur votre système et retourne ces résultats. Ce type de recherche produit souvent plus de résultats que prévu, y compris les informations non pertinentes pour vous.

help processes
Name                              Category  Module                    Synops
----                              --------  ------                    ------
Disconnect-PSSession              Cmdlet    Microsoft.PowerShell.Core Dis...
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Con...
ForEach-Object                    Cmdlet    Microsoft.PowerShell.Core Per...
Get-PSHostProcessInfo             Cmdlet    Microsoft.PowerShell.Core Get...
Get-PSSessionConfiguration        Cmdlet    Microsoft.PowerShell.Core Get...
New-PSSessionOption               Cmdlet    Microsoft.PowerShell.Core Cre...
New-PSTransportOption             Cmdlet    Microsoft.PowerShell.Core Cre...
Out-Host                          Cmdlet    Microsoft.PowerShell.Core Sen...
Start-Job                         Cmdlet    Microsoft.PowerShell.Core Sta...
Where-Object                      Cmdlet    Microsoft.PowerShell.Core Sel...
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Deb...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Get...
Get-WmiObject                     Cmdlet    Microsoft.PowerShell.M... Get...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Sta...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Sto...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Wai...
Clear-Variable                    Cmdlet    Microsoft.PowerShell.U... Del...
Convert-String                    Cmdlet    Microsoft.PowerShell.U... For...
ConvertFrom-Csv                   Cmdlet    Microsoft.PowerShell.U... Con...
ConvertFrom-Json                  Cmdlet    Microsoft.PowerShell.U... Con...
ConvertTo-Html                    Cmdlet    Microsoft.PowerShell.U... Con...
ConvertTo-Xml                     Cmdlet    Microsoft.PowerShell.U... Cre...
Debug-Runspace                    Cmdlet    Microsoft.PowerShell.U... Sta...
Export-Csv                        Cmdlet    Microsoft.PowerShell.U... Con...
Export-FormatData                 Cmdlet    Microsoft.PowerShell.U... Sav...
Format-List                       Cmdlet    Microsoft.PowerShell.U... For...
Format-Table                      Cmdlet    Microsoft.PowerShell.U... For...
Get-Unique                        Cmdlet    Microsoft.PowerShell.U... Ret...
Group-Object                      Cmdlet    Microsoft.PowerShell.U... Gro...
Import-Clixml                     Cmdlet    Microsoft.PowerShell.U... Imp...
Import-Csv                        Cmdlet    Microsoft.PowerShell.U... Cre...
Measure-Object                    Cmdlet    Microsoft.PowerShell.U... Cal...
Out-File                          Cmdlet    Microsoft.PowerShell.U... Sen...
Out-GridView                      Cmdlet    Microsoft.PowerShell.U... Sen...
Select-Object                     Cmdlet    Microsoft.PowerShell.U... Sel...
Set-Variable                      Cmdlet    Microsoft.PowerShell.U... Set...
Sort-Object                       Cmdlet    Microsoft.PowerShell.U... Sor...
Tee-Object                        Cmdlet    Microsoft.PowerShell.U... Sav...
Trace-Command                     Cmdlet    Microsoft.PowerShell.U... Con...
Write-Information                 Cmdlet    Microsoft.PowerShell.U... Spe...
Export-BinaryMiLog                Cmdlet    CimCmdlets                Cre...
Get-CimAssociatedInstance         Cmdlet    CimCmdlets                Ret...
Get-CimInstance                   Cmdlet    CimCmdlets                Get...
Import-BinaryMiLog                Cmdlet    CimCmdlets                Use...
Invoke-CimMethod                  Cmdlet    CimCmdlets                Inv...
New-CimInstance                   Cmdlet    CimCmdlets                Cre...
Remove-CimInstance                Cmdlet    CimCmdlets                Rem...
Set-CimInstance                   Cmdlet    CimCmdlets                Mod...
Compress-Archive                  Function  Microsoft.PowerShell.A... Cre...
Get-Counter                       Cmdlet    Microsoft.PowerShell.D... Get...
Invoke-WSManAction                Cmdlet    Microsoft.WSMan.Manage... Inv...
Remove-WSManInstance              Cmdlet    Microsoft.WSMan.Manage... Del...
Get-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Dis...
New-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Cre...
Set-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Mod...
about_Arithmetic_Operators        HelpFile
about_Arrays                      HelpFile
about_Environment_Variables       HelpFile
about_Execution_Policies          HelpFile
about_Functions                   HelpFile
about_Jobs                        HelpFile
about_Logging                     HelpFile
about_Methods                     HelpFile
about_Objects                     HelpFile
about_Pipelines                   HelpFile
about_Preference_Variables        HelpFile
about_Remote                      HelpFile
about_Remote_Jobs                 HelpFile
about_Session_Configuration_Files HelpFile
about_Simplified_Syntax           HelpFile
about_Switch                      HelpFile
about_Variables                   HelpFile
about_Variable_Provider           HelpFile
about_Windows_PowerShell_5.1      HelpFile
about_WQL                         HelpFile
about_WS-Management_Cmdlets       HelpFile
about_Foreach-Parallel            HelpFile
about_Parallel                    HelpFile
about_Sequence                    HelpFile

Lorsque vous avez recherché process, il a retourné 12 résultats. Toutefois, lors de la recherche de processes, il a produit 78 résultats. Si votre recherche ne trouve qu’une seule correspondance, Get-Help affiche le contenu d’aide au lieu de répertorier les résultats de la recherche.

help *hotfix*
NAME
    Get-HotFix

SYNOPSIS
    Gets the hotfixes that are installed on local or remote computers.


SYNTAX
    Get-HotFix [-ComputerName <System.String[]>] [-Credential
    <System.Management.Automation.PSCredential>] [-Description
    <System.String[]>] [<CommonParameters>]

    Get-HotFix [[-Id] <System.String[]>] [-ComputerName <System.String[]>]
    [-Credential <System.Management.Automation.PSCredential>]
    [<CommonParameters>]


DESCRIPTION
    > This cmdlet is only available on the Windows platform. The
    `Get-HotFix` cmdlet uses the Win32_QuickFixEngineering WMI class to
    list hotfixes that are installed on the local computer or specified
    remote computers.


RELATED LINKS
    Online Version: https://learn.microsoft.com/powershell/module/microsoft.
    powershell.management/get-hotfix?view=powershell-5.1&WT.mc_id=ps-gethelp
    about_Arrays
    Add-Content
    Get-ComputerRestorePoint
    Get-Credential
    Win32_QuickFixEngineering class

REMARKS
    To see the examples, type: "Get-Help Get-HotFix -Examples".
    For more information, type: "Get-Help Get-HotFix -Detailed".
    For technical information, type: "Get-Help Get-HotFix -Full".
    For online help, type: "Get-Help Get-HotFix -Online"

Vous pouvez également trouver des commandes qui manquent d’articles d’aide avec Get-Help, bien que cette fonctionnalité ne soit pas couramment connue. La fonction more est l’une des commandes qui n’ont pas d’article d’aide. Pour vérifier que vous pouvez rechercher des commandes avec Get-Help qui n’incluent pas d’articles d’aide, utilisez la fonction help pour rechercher more.

help *more*

La recherche a trouvé une seule correspondance. Elle a donc renvoyé les informations de syntaxe de base que vous voyez lorsqu’une commande n’a pas d’article d’aide.

NAME
    more

SYNTAX
    more [[-paths] <string[]>]

ALIASES
    None

REMARKS
    None

Le système d’aide PowerShell contient également des articles d’aide conceptuels About. Vous devez mettre à jour le contenu d’aide sur votre système pour obtenir les articles About. Pour plus d’informations, consultez la section Mise à jour de l’aide de ce chapitre.

Utilisez la commande suivante pour renvoyer la liste de tous les À propos de articles d’aide sur votre système.

help About_*

Lorsque vous limitez les résultats à un À propos de article d’aide, Get-Help affiche le contenu de cet article.

help about_Updatable_Help

Mise à jour de l’aide

Plus haut dans ce chapitre, vous avez mis à jour les articles d’aide PowerShell sur votre ordinateur la première fois que vous avez exécuté l’applet de commande Get-Help. Vous devez exécuter régulièrement l’applet de commande Update-Help sur votre ordinateur pour obtenir les mises à jour du contenu d’aide.

Importante

Dans Windows PowerShell 5.1, vous devez exécuter Update-Help en tant qu’administrateur dans une session PowerShell avec élévation de privilèges.

Dans l’exemple suivant, Update-Help télécharge le contenu d’aide PowerShell pour tous les modules installés sur votre ordinateur. Vous devez utiliser le paramètre Force pour vous assurer que vous téléchargez la dernière version du contenu d’aide.

Update-Help -Force

Comme indiqué dans les résultats suivants, un module a retourné une erreur. Les erreurs ne sont pas rares et se produisent généralement lorsque l’auteur du module ne configure pas correctement l’aide pouvant être mise à jour.

Update-Help : Failed to update Help for the module(s) 'BitsTransfer' with UI
culture(s) {en-US} : Unable to retrieve the HelpInfo XML file for UI culture
en-US. Make sure the HelpInfoUri property in the module manifest is valid or
check your network connection and then try the command again.
At line:1 char:1
+ Update-Help
+ ~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (:) [Update-Help], Except
   ion
    + FullyQualifiedErrorId : UnableToRetrieveHelpInfoXml,Microsoft.PowerShe
   ll.Commands.UpdateHelpCommand

Update-Help nécessite un accès Internet pour télécharger le contenu de l’aide. Si votre ordinateur n’a pas d’accès à Internet, utilisez l’applet de commande Save-Help sur un ordinateur disposant d’un accès Internet pour télécharger et enregistrer le contenu d’aide mis à jour. Utilisez ensuite le paramètre SourcePath de Update-Help pour spécifier l’emplacement du contenu d’aide mis à jour enregistré.

Get-Command

Get-Command est une autre commande multi-usage qui vous aide à trouver des commandes. Lorsque vous exécutez Get-Command sans paramètres, elle retourne une liste de toutes les commandes PowerShell sur votre système. Vous pouvez également utiliser Get-Command pour obtenir une syntaxe de commande similaire à Get-Help.

Comment déterminer la syntaxe de Get-Command? Vous pouvez utiliser Get-Help pour afficher l’article d’aide pour Get-Command, comme indiqué dans la section Obtenir de l’aide de ce chapitre. Vous pouvez également utiliser Get-Command avec le paramètre syntaxe pour afficher la syntaxe de n’importe quelle commande. Ce raccourci vous aide à déterminer rapidement comment utiliser une commande sans parcourir son contenu d’aide.

Get-Command -Name Get-Command -Syntax

L’utilisation de Get-Command avec le paramètre de syntaxe fournit une vue plus concise de la syntaxe qui montre les paramètres et leurs types de valeurs, sans répertorier les valeurs spécifiques autorisées comme celles que montre Get-Help.

Get-Command [[-ArgumentList] <Object[]>] [-Verb <string[]>]
[-Noun <string[]>] [-Module <string[]>]
[-FullyQualifiedModule <ModuleSpecification[]>] [-TotalCount <int>]
[-Syntax] [-ShowCommandInfo] [-All] [-ListImported]
[-ParameterName <string[]>] [-ParameterType <PSTypeName[]>]
[<CommonParameters>]

Get-Command [[-Name] <string[]>] [[-ArgumentList] <Object[]>]
[-Module <string[]>] [-FullyQualifiedModule <ModuleSpecification[]>]
[-CommandType <CommandTypes>] [-TotalCount <int>] [-Syntax]
[-ShowCommandInfo] [-All] [-ListImported] [-ParameterName <string[]>]
[-ParameterType <PSTypeName[]>] [<CommonParameters>]

Si vous avez besoin d’informations plus détaillées sur l’utilisation d’une commande, utilisez Get-Help.

help Get-Command -Full

La section SYNTAX de Get-Help fournit un affichage plus convivial en développant des valeurs énumérées pour les paramètres. Il vous montre les valeurs réelles que vous pouvez utiliser, ce qui facilite la compréhension des options disponibles.

...
    Get-Command [[-Name] <System.String[]>] [[-ArgumentList]
    <System.Object[]>] [-All] [-CommandType {Alias | Function | Filter |
    Cmdlet | ExternalScript | Application | Script | Workflow |
    Configuration | All}] [-FullyQualifiedModule
    <Microsoft.PowerShell.Commands.ModuleSpecification[]>] [-ListImported]
    [-Module <System.String[]>] [-ParameterName <System.String[]>]
    [-ParameterType <System.Management.Automation.PSTypeName[]>]
    [-ShowCommandInfo] [-Syntax] [-TotalCount <System.Int32>]
    [<CommonParameters>]

    Get-Command [[-ArgumentList] <System.Object[]>] [-All]
    [-FullyQualifiedModule
    <Microsoft.PowerShell.Commands.ModuleSpecification[]>] [-ListImported]
    [-Module <System.String[]>] [-Noun <System.String[]>] [-ParameterName
    <System.String[]>] [-ParameterType
    <System.Management.Automation.PSTypeName[]>] [-ShowCommandInfo]
    [-Syntax] [-TotalCount <System.Int32>] [-Verb <System.String[]>]
    [<CommonParameters>]
...

La section PARAMETERS de l’aide pour Get-Command révèle que les paramètres nom, et verbe acceptent des caractères génériques.

...
    -Name <System.String[]>
        Specifies an array of names. This cmdlet gets only commands that
        have the specified name. Enter a name or name pattern. Wildcard
        characters are permitted.

        To get commands that have the same name, use the All parameter. When
        two commands have the same name, by default, `Get-Command` gets the
        command that runs when you type the command name.

        Required?                    false
        Position?                    0
        Default value                None
        Accept pipeline input?       True (ByPropertyName, ByValue)
        Accept wildcard characters?  true

    -Noun <System.String[]>
        Specifies an array of command nouns. This cmdlet gets commands,
        which include cmdlets, functions, and aliases, that have names that
        include the specified noun. Enter one or more nouns or noun
        patterns. Wildcard characters are permitted.

        Required?                    false
        Position?                    named
        Default value                None
        Accept pipeline input?       True (ByPropertyName)
        Accept wildcard characters?  true
    -Verb <System.String[]>
        Specifies an array of command verbs. This cmdlet gets commands,
        which include cmdlets, functions, and aliases, that have names that
        include the specified verb. Enter one or more verbs or verb
        patterns. Wildcard characters are permitted.

        Required?                    false
        Position?                    named
        Default value                None
        Accept pipeline input?       True (ByPropertyName)
        Accept wildcard characters?  true
...

L’exemple suivant utilise le caractère générique * avec la valeur du paramètre Name de Get-Command.

Get-Command -Name *service*

Lorsque vous utilisez des caractères génériques avec le paramètre Name de Get-Command, il retourne des commandes PowerShell et des commandes natives, comme indiqué dans les résultats suivants.


CommandType     Name                                               Version
-----------     ----                                               -------
Function        Get-NetFirewallServiceFilter                       2.0.0.0
Function        Set-NetFirewallServiceFilter                       2.0.0.0
Cmdlet          Get-Service                                        3.1.0.0
Cmdlet          New-Service                                        3.1.0.0
Cmdlet          New-WebServiceProxy                                3.1.0.0
Cmdlet          Restart-Service                                    3.1.0.0
Cmdlet          Resume-Service                                     3.1.0.0
Cmdlet          Set-Service                                        3.1.0.0
Cmdlet          Start-Service                                      3.1.0.0
Cmdlet          Stop-Service                                       3.1.0.0
Cmdlet          Suspend-Service                                    3.1.0.0
Application     SecurityHealthService.exe                          10.0.2...
Application     SensorDataService.exe                              10.0.2...
Application     services.exe                                       10.0.2...
Application     services.msc                                       0.0.0.0
Application     TieringEngineService.exe                           10.0.2...
Application     Windows.WARP.JITService.exe                        10.0.2...

Vous pouvez limiter les résultats de Get-Command aux commandes PowerShell à l’aide du paramètre CommandType.

Get-Command -Name *service* -CommandType Cmdlet, Function, Alias, Script

Une autre option pourrait être d’utiliser soit le verbe soit le nom, ou les deux, car seules les commandes PowerShell ont des verbes et des noms.

L’exemple suivant utilise Get-Command pour rechercher des commandes sur votre ordinateur qui fonctionnent avec des processus. Utilisez le paramètre nom et spécifiez Process comme valeur.

Get-Command -Noun Process
CommandType     Name                                               Version
-----------     ----                                               -------
Cmdlet          Debug-Process                                      3.1.0.0
Cmdlet          Get-Process                                        3.1.0.0
Cmdlet          Start-Process                                      3.1.0.0
Cmdlet          Stop-Process                                       3.1.0.0
Cmdlet          Wait-Process                                       3.1.0.0

Résumé

Dans ce chapitre, vous avez appris à rechercher des commandes avec Get-Help et Get-Command. Vous avez également appris à utiliser le système d’aide pour comprendre comment utiliser des commandes une fois que vous les avez trouvés. En outre, vous avez appris à mettre à jour le système d’aide sur votre ordinateur lorsque de nouveaux contenus d’aide sont disponibles.

Révision

  1. Le paramètre DisplayName de Get-Service est-il positionnel ?
  2. Combien de jeux de paramètres l’applet de commande Get-Process possède-t-elle ?
  3. Quelles commandes PowerShell existent pour l’utilisation des journaux d’événements ?
  4. Quelle est la commande PowerShell pour renvoyer une liste de processus PowerShell en cours d’exécution sur votre ordinateur ?
  5. Comment mettre à jour le contenu d’aide PowerShell stocké sur votre ordinateur ?

Références

Pour en savoir plus sur les concepts abordés dans ce chapitre, lisez les articles d’aide PowerShell suivants.

Étapes suivantes

Dans le chapitre suivant, vous allez découvrir les objets, les propriétés, les méthodes et l’applet de commande Get-Member.