Apprendre les noms des commandes et paramètres de commande peut nécessiter un investissement significatif en termes de temps avec la plupart des interfaces de ligne de commande. Le problème est qu'il existe très peu de modèles, de sorte que le seul moyen d'apprendre consiste à mémoriser chaque commande et chaque paramètre que vous devrez utiliser régulièrement.

Lorsque vous travaillez avec une nouvelle commande ou un nouveau paramètre, vous ne pouvez généralement pas utiliser ce que vous savez déjà ; vous devez rechercher et apprendre un nouveau nom. Si vous observez la manière dont les ajouts incrémentiels de fonctionnalités enrichissent le petit jeu d'outils de départ des interfaces, vous constaterez aisément que la structure n'est pas standard. Avec les noms de commande en particulier, cela peut sembler logique, puisque chaque commande est un outil distinct, mais il existe un meilleur moyen de gérer des noms de commandes.

La plupart des commandes sont construites pour gérer des éléments du système d'exploitation ou des applications, comme des services ou processus. Les commandes ont une variété de noms qui peuvent ou non s'intégrer à une famille. Par exemple, sur les systèmes Windows, vous pouvez utiliser les commandes net start et net stop pour démarrer et arrêter un service. Il existe pour Windows un autre outil de contrôle de service plus généraliste, dont le nom est complètement différent, sc, ce qui ne correspond pas au modèle de dénomination des commandes de service net. Pour la gestion des processus, Windows possède la commande tasklist qui permet d'obtenir la liste des processus et la commande taskkill qui permet de les arrêter.

Les spécifications de paramètres pour les commandes qui les acceptent n'obéissent pas toutes aux mêmes règles. Vous ne pouvez pas utiliser la commande net start pour démarrer un service sur un ordinateur distant. La commande sc permet de démarrer un service sur un ordinateur distant, mais pour spécifier l'ordinateur distant, vous devez faire précéder son nom de deux barres obliques inverses. Par exemple, pour démarrer le service spouleur (Spooler) sur un ordinateur distant nommé DC01, vous devez taper sc \\DC01 start spooler. Pour obtenir la liste des tâches en cours d'exécution sur DC01, vous devez utiliser le paramètre /S (pour « system ») et fournir le nom DC01 sans barres obliques inverses, comme ceci : tasklist /S DC01.

Bien qu'il existe d'importantes distinctions techniques entre un service et un processus, tous deux constituent des exemples d'éléments qu'il est possible de gérer sur un ordinateur et ayant un cycle de vie précis. Vous pouvez démarrer ou arrêter un service ou un processus ou obtenir la liste de tous les services ou processus en cours d'exécution. En d'autres termes, bien qu'il s'agisse de deux choses distinctes, les actions que nous effectuons sur un service ou un processus sont souvent conceptuellement les mêmes. En outre, les choix que nous pouvons faire pour personnaliser une action en spécifiant des paramètres peuvent également être conceptuellement semblables.

Windows PowerShell exploite ces similarités pour réduire le nombre de noms distincts que vous devez connaître pour comprendre et utiliser des applets de commande.

Les applets de commande utilisent des noms verbe-substantif pour réduire la mémorisation des commandes

Windows PowerShell utilise un système de dénomination « verbe-substantif », où chaque nom d'applet de commande est constitué d'un verbe standard et d'un substantif spécifique, tous deux souvent anglais, séparés par un tiret. Les verbes Windows PowerShell ne sont pas toujours des verbes anglais, mais ils expriment des actions spécifiques dans Windows PowerShell. Les substantifs sont très similaires à ceux des autres langues et décrivent des types spécifiques d'objets essentiels pour l'administration du système. Il est aisé de démontrer par quelques exemples comment ces noms en deux parties réduisent l'effort d'apprentissage.

Les substantifs sont moins restreints, mais doivent toujours décrire ce sur quoi agit une commande. Windows PowerShell a des commandes telles que Get-Process, Stop-Process, Get-Service et Stop-Service.

Dans le cas de deux substantifs et deux verbes, la cohérence ne simplifie pas autant l'apprentissage. Toutefois, si vous considérez un jeu standard de 10 verbes et 10 substantifs, vous n'avez que 20 mots à comprendre, mais ces mots peuvent être utilisés pour former 100 noms de commandes distincts.

Vous pouvez fréquemment reconnaître ce que fait une commande en lisant son nom et le substantif à utiliser pour une nouvelle commande est souvent évident. Par exemple, une commande d'arrêt de l'ordinateur peut être Stop-Computer. Une commande qui répertorie tous les ordinateurs d'un réseau peut être Get-Computer. La commande qui obtient la date système est Get-Date.

Vous pouvez répertorier toutes les commandes qui incluent un verbe particulier au moyen du paramètre -Verb de Get-Command (nous présenterons en détail Get-Command dans la section suivante). Par exemple, pour consulter toutes les applets de commande qui utilisent le verbe Get, tapez :

PS> Get-Command -Verb Get
CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Get-Acl                         Get-Acl [[-Path] <String[]>]...
Cmdlet          Get-Alias                       Get-Alias [[-Name] <String[]...
Cmdlet          Get-AuthenticodeSignature       Get-AuthenticodeSignature [-...
Cmdlet          Get-ChildItem                   Get-ChildItem [[-Path] <Stri...
...

Le paramètre -Noun est plus utile encore, car il vous permet de consulter une famille des commandes qui affectent le même type d'objet. Par exemple, si vous souhaitez consulter les commandes disponibles pour la gestion de services, tapez la commande suivante :

PS> Get-Command -Noun Service
CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Get-Service                     Get-Service [[-Name] <String...
Cmdlet          New-Service                     New-Service [-Name] <String>...
Cmdlet          Restart-Service                 Restart-Service [-Name] <Str...
Cmdlet          Resume-Service                  Resume-Service [-Name] <Stri...
Cmdlet          Set-Service                     Set-Service [-Name] <String>...
Cmdlet          Start-Service                   Start-Service [-Name] <Strin...
Cmdlet          Stop-Service                    Stop-Service [-Name] <String...
Cmdlet          Suspend-Service                 Suspend-Service [-Name] <Str... 
...

Une commande n'est pas une applet de commande simplement parce que son nom obéit au modèle verbe-substantif. Clear-Host, par exemple, est une commande Windows PowerShell native qui permet d'effacer le contenu de la fenêtre de console, mais n'est pas une applet de commande. La commande Clear-Host est en réalité une fonction interne, comme vous pouvez le voir si vous exécutez Get-Command dessus :

PS> Get-Command -Name Clear-Host

CommandType     Name                            Definition
-----------     ----                            ----------
Function        Clear-Host                      $spaceType = [System.Managem...

Les applets de commande utilisent des paramètres standard

Comme indiqué précédemment, les commandes utilisées dans les interfaces de ligne de commande traditionnelles n'ont généralement pas de noms de paramètres cohérents. Il peut même arriver que des paramètres n'aient pas de nom du tout. Lorsqu'ils en ont un, il s'agit souvent d'un caractère ou de mots abrégés qui peuvent être tapés rapidement, mais ne sont pas faciles à comprendre pour les nouveaux utilisateurs.

Contrairement à la plupart des autres interfaces de ligne de commande traditionnelles, Windows PowerShell traite les paramètres directement et utilise cet accès direct aux paramètres ainsi que des indications fournies aux développeurs pour normaliser les noms de paramètres. Bien que cela ne garantisse pas que chaque applet de commande sera conforme aux normes, cela y incite.

Remarque :

Les noms de paramètres sont toujours précédés d'un « - » lorsque vous les utilisez, pour permettre à Windows PowerShell de les identifier clairement en tant que paramètres. Dans l'exemple Get-Command -Name Clear-Host, le nom du paramètre est Name, mais il est entré sous la forme -Name.

Vous trouverez ci-dessous certaines caractéristiques générales des noms et utilisations de paramètres standard.

Paramètre Help (?)

Lorsque vous spécifiez le paramètre -? pour une applet de commande, celle-ci n'est pas exécutée. À la place, Windows PowerShell affiche l'aide qui lui est associée.

Paramètres courants

Windows PowerShell propose plusieurs paramètres appelés « paramètres courants ». Parce que ces paramètres sont contrôlés par le moteur Windows PowerShell, chaque fois qu'ils sont implémentés par une applet de commande, ils se comportent toujours de la même manière. Les paramètres courants sont WhatIf, Confirm, Verbose, Debug, Warn, ErrorAction, ErrorVariable, OutVariable et OutBuffer.

Paramètres suggérés

Les applets de commande principales Windows PowerShell utilisent des noms standard pour les paramètres semblables. Bien que l'utilisation de noms de paramètres ne soit pas imposée, des indications explicites sont fournies afin de favoriser la normalisation.

Par exemple, ces indications recommandent de nommer un paramètre faisant référence à un ordinateur par son nom comme ComputerName, plutôt que par Server, Host, System, Node ou autres mots courants possibles. Parmi les noms de paramètre suggérés importants figurent Force, Exclude, Include, PassThru, Path et CaseSensitive.




Table des matières