Geek School: Apprendre à utiliser des objets dans PowerShell

Table des matières:

Geek School: Apprendre à utiliser des objets dans PowerShell
Geek School: Apprendre à utiliser des objets dans PowerShell

Vidéo: Geek School: Apprendre à utiliser des objets dans PowerShell

Vidéo: Geek School: Apprendre à utiliser des objets dans PowerShell
Vidéo: [Tuto] Comment connaître le type de RAM de son PC ? - YouTube 2024, Avril
Anonim
Comprendre les objets est l’un des concepts fondamentaux pour «obtenir» PowerShell. Rejoignez-nous lors de l'exploration d'objets et de la manière dont ils améliorent PowerShell par rapport à tout autre shell existant aujourd'hui.
Comprendre les objets est l’un des concepts fondamentaux pour «obtenir» PowerShell. Rejoignez-nous lors de l'exploration d'objets et de la manière dont ils améliorent PowerShell par rapport à tout autre shell existant aujourd'hui.

Assurez-vous de lire les articles précédents de la série:

  • Apprenez à automatiser Windows avec PowerShell
  • Apprendre à utiliser les cmdlets dans PowerShell

Et restez à l’écoute pour le reste de la série toute la semaine.

Objets

Vous êtes-vous déjà demandé ce qui distingue PowerShell d'un shell Linux traditionnel tel que Bash ou même de l'invite de commande héritée? La réponse est très simple: les shells traditionnels génèrent du texte, ce qui rend difficile le formatage et le filtrage. Bien sûr, il existe des outils pour vous aider à faire le travail (sed et grep viennent à l’esprit), mais à la fin de la journée, si vous souhaitez effectuer une analyse syntaxique lourde du texte, vous devez connaître les expressions régulières comme dos de ta main.

PowerShell tire parti du cadre.Net sous-jacent et adopte une approche différente en utilisant des objets plutôt que du texte. Les objets ne sont qu'une représentation de quelque chose. Ils sont une collection de pièces et d’actions pour les utiliser. Jetons un coup d’œil aux pièces d’un vélo et à la façon dont nous pourrions les utiliser.

Image
Image

Les objets en.Net sont sensiblement les mêmes, à deux différences près: les «parties» sont appelées Propriétés et les "instructions" sont appelées les méthodes. Si nous voulions représenter un service Windows sous forme d'objet, nous pourrions décider qu'il est approprié de le décrire à l'aide de trois propriétés: nom du service, état et description. Nous devons également interagir avec le service afin de pouvoir attribuer à l'objet une méthode de démarrage, une méthode d'arrêt et une méthode de pause.

Vous pouvez voir les propriétés et les méthodes d’un objet en le transmettant à la cmdlet Get-Member. Les objets qu'une sortie d'applet de commande PowerShell génère sont en grande partie des types sous-jacents du framework.Net, mais vous pouvez créer vos propres objets si vous devez utiliser un langage tel que C # ou utiliser le type PSObject.
Vous pouvez voir les propriétés et les méthodes d’un objet en le transmettant à la cmdlet Get-Member. Les objets qu'une sortie d'applet de commande PowerShell génère sont en grande partie des types sous-jacents du framework.Net, mais vous pouvez créer vos propres objets si vous devez utiliser un langage tel que C # ou utiliser le type PSObject.

Le pipeline

Un pipeline contient de nombreux shells Linux, ce qui vous permet d’envoyer le texte généré par une commande en tant qu’entrée à la commande suivante du pipeline. PowerShell passe au niveau suivant en vous permettant de prendre les objets générés par une applet de commande et de les transmettre en tant qu'entrée à l'applet de commande suivante du pipeline. L'astuce consiste à connaître le type d'objet renvoyé par une applet de commande, ce qui est très simple lorsque vous utilisez l'applet de commande Get-Member.

Get-Service | Get-Member

Pour des raisons autres que celles de cet article, les propriétés et les méthodes sont appelées conjointement membres de la classe, ce qui explique pourquoi vous utilisez la cmdlet Get-Member pour obtenir la liste de toutes les méthodes et propriétés d'un objet. Cependant, la cmdlet Get-Member renvoie également une autre information importante, le type d'objet sous-jacent. Dans la capture d'écran ci-dessus, nous pouvons voir que Get-Service renvoie des objets du type:
Pour des raisons autres que celles de cet article, les propriétés et les méthodes sont appelées conjointement membres de la classe, ce qui explique pourquoi vous utilisez la cmdlet Get-Member pour obtenir la liste de toutes les méthodes et propriétés d'un objet. Cependant, la cmdlet Get-Member renvoie également une autre information importante, le type d'objet sous-jacent. Dans la capture d'écran ci-dessus, nous pouvons voir que Get-Service renvoie des objets du type:

System.ServiceProcess.ServiceController

Etant donné que PowerShell traite des objets et non du texte, toutes les applets de commande ne peuvent pas être liées ensemble à l'aide du pipeline [1]. Cela signifie que nous devons trouver une cmdlet cherchant à accepter un objet System.ServiceProcess.ServiceController du pipeline.

Get-Command -ParameterType System.ServiceProcess.ServiceController

Notez qu'il existe une cmdlet appelée Stop-Service; jetons un coup d’œil à l’aide qui s’y rapporte.
Notez qu'il existe une cmdlet appelée Stop-Service; jetons un coup d’œil à l’aide qui s’y rapporte.

Get-Help –Name Stop-Service

Il semble que le paramètre InputObject prenne un tableau d'objets ServiceController en entrée. Généralement, si vous voyez un paramètre appelé InputObject, il acceptera les entrées du Pipeline, mais pour vous assurer que nous allons jeter un coup d’œil à l’aide complète de ce paramètre.
Il semble que le paramètre InputObject prenne un tableau d'objets ServiceController en entrée. Généralement, si vous voyez un paramètre appelé InputObject, il acceptera les entrées du Pipeline, mais pour vous assurer que nous allons jeter un coup d’œil à l’aide complète de ce paramètre.

Get-Help -Name Stop-Service –Full

Nos soupçons étaient corrects. Donc, à ce stade, nous savons ce qui suit:
Nos soupçons étaient corrects. Donc, à ce stade, nous savons ce qui suit:
  • Get-Service retourne des objets ServiceController
  • Stop-Service a un paramètre appelé InputObject qui accepte un ou plusieurs ServiceControllers en entrée.
  • Le paramètre InputObject accepte les entrées de pipeline.

En utilisant cette information, nous pourrions faire ce qui suit:

Get-Service -Name ‘Apple Mobile Device’ | Stop-Service

C’est tout pour cette fois, les gars. La prochaine fois, nous verrons comment formater, filtrer et comparer des objets dans le pipeline.
C’est tout pour cette fois, les gars. La prochaine fois, nous verrons comment formater, filtrer et comparer des objets dans le pipeline.

Devoirs

Lire sur le pipeline d'objets

Si vous avez des questions, vous pouvez me tweeter @taybgibb ou laisser un commentaire.

Conseillé: