10Aug

Geek School: apprendre à utiliser les applets de commande dans PowerShell

Si vous avez utilisé ipconfig ou ping via l'invite de commande, vous êtes à mi-chemin pour devenir un ninja PowerShell. Alors venez nous rejoindre alors que nous découvrons des cmdlets dans cette installation de Geek School.

Soyez sûr de vérifier notre premier article présentant PowerShell, et restez à l'écoute pour le reste de notre série toute la semaine.

Anatomie d'une applet de commande

Dans la première partie de la série, nous avons vu une applet de commande ressemblant à ceci:

Update-Help

Les applets de commande PowerShell ont une syntaxe Verb-Noun, visible ci-dessus. La chose importante à noter est que le nom est toujours au singulier même si la cmdlet peut renvoyer plusieurs résultats. Pour afficher une liste des verbes légaux dans PowerShell, vous pouvez utiliser la cmdlet Get-Verb.

Connaître les verbes légaux et se souvenir de la règle du nom singulier aide vraiment à deviner les noms des cmdlets. Par exemple, supposons que vous souhaitiez obtenir une liste des services

et leur statut - c'est vrai, c'est aussi simple que Get-Service. Comment pensez-vous que nous pourrions obtenir une liste des processus en cours d'exécution - c'est vrai, Get-Process fera l'affaire.

Get-Process

Cela rend vraiment facile de travailler avec n'importe quelle technologie. Par exemple, si vous avez chargé les cmdlets Exchange, nous pouvons facilement obtenir une liste de boîtes aux lettres sur le serveur en utilisant:

Get-Mailbox

Toutefois, il existe une exception.Échange mis à part, toutes les autres commandes spécifiques à la technologie nécessitent un préfixe. Par exemple, si nous voulions obtenir les utilisateurs actuellement connectés via Remote Desktop, nous taperions:

Get-RDUserSession

Ce qui peut être vu dans la capture d'écran ci-dessous.

Remarque: Cette capture d'écran a été prise sur une boîte Server 2012 car c'est là que vous trouverez la plupart des modules spécifiques à la technologie.

Il y a quelque temps, j'ai lu un article de Don Jones, le parrain de PowerShell, où il expliquait qu'Exchange était livré avant que ce préfixe ne soit ajouté aux cmdlets, donc il ne les a jamais implémentés et ne le sera jamais.

Alias ​​

Une autre fonctionnalité de PowerShell est la possibilité d'avoir plusieurs façons d'exécuter la même commande - les alias, si vous voulez. La chose impressionnante à leur sujet est qu'ils ont inclus de nombreuses commandes que vous avez pu utiliser dans l'invite de commande, ainsi que certains alias Linux. Par exemple, dans PowerShell nous pouvons obtenir une liste de répertoires en utilisant:

Get-ChildItem

Utilisé pour utiliser l'invite de commande? Ne vous inquiétez pas, ils vous ont couvert.

Avoir un arrière-plan Linux? Ils vous ont couvert là aussi.

Lorsque vous avez été scripting pendant quelques années, vous avez tendance à devenir fainéant et à commencer à utiliser beaucoup d'alias, mais cela n'aide pas les nouveaux arrivants qui vont lire notre code. Pour voir quelle commande un alias fonctionne sous le capot, vous pouvez utiliser ce qui suit:

Get-Alias ​​-Name ls

D'autre part, si vous sentez qu'il est temps de monter votre jeu, vous pouvez utiliser le paramètre de définition pour obtenirtous les alias pour une applet de commande:

Get-ChildItem -Definition Get-ChildItem

Si vous venez d'un autre contexte, vous pouvez ajouter vos propres alias en procédant comme suit:

Nouvel alias -Nom icanhazfilez -Value Get-ChildItem

Vous devrez remplacer "icanhazfilez" par le nom de votre nouvel alias et Get-ChildItem par l'applet de commande que vous souhaitez utiliser sous le capot.

Une chose à noter est que vous perdez tous les alias que vous avez définis lorsque vous fermez le shell. Vous pouvez contourner cela en ajoutant leur définition à votre script de profil.

Tronquer les paramètres

Windows PowerShell vous permet également de tronquer les noms de paramètres jusqu'au point où ils deviennent ambigus, c'est-à-dire jusqu'au point où PowerShell n'arrive plus à déterminer de quel paramètre vous parlez. Par exemple:

Get-Service -Nom «Apple Mobile Device» -ComputerName localhost

Identique à:

Get-Service -Na «Apple Mobile Device» -Com localhost

Si par hasard les noms des paramètres vous semblent trop ambigusobtiendra une erreur.

Legacy Commandes

Enfin, les commandes que vous connaissez et que vous aimez continueront de fonctionner dans PowerShell.

ping www.google.com

Rappelez-vous simplement que les applications héritées, comme ping, génèrent une chaîne, et qu'il existe souvent une meilleure façon de faire la même chose avec une applet de commande PowerShell.

Au lieu de sortir une longue chaîne de texte, il nous reste maintenant un objet, que nous verrons dans l'édition de demain de l'école Geek.