fr-FR/tutorials/Invoke-GetMemberTutorial.ps1

#an interactive tutorial for Get-Member

Param(
  [switch]$Full,
  [switch]$Menu
)

$cmd = 'Get-Member'
$title = "$($titleStyle)Démarrer avec $cmd$reset"

#region content
$Intro = @"
 
Le cmdlet {0}$cmd{1} est l'un que vous utiliserez souvent dans PowerShell. Vous profiterez davantage de
PowerShell si vous comprenez comment l'utiliser. La commande a un alias {4}gm{1}.
 
L'un des plus grands défis pour les débutants en PowerShell est de comprendre que PowerShell fonctionne
avec des {3}objets{1} dans un pipeline et non du texte. Lorsque vous exécutez une commande dans PowerShell,
elle renvoie un objet, généralement formaté pour faciliter la lecture.
 
$prompt {0}Get-Process{1} {2}pwsh{1}
"@
 -f $cmdStyle,$reset,$defaultTokenStyle,$highLight,$highLight2

$P1 = @"
Le cmdlet {0}Get-Process{1} écrit un objet qui représente un processus dans le pipeline PowerShell.
{3}Ne supposez pas que les en-têtes de colonne sont les propriétés d'un objet{1}. De nombreuses
commandes PowerShell sont conçues pour fournir des informations dans un format facile à lire. Il y a
probablement plus dans l'objet que ce que vous voyez à l'écran.
 
C'est là qu'intervient {0}Get-Member{1}. Vous pouvez rediriger la sortie d'une commande vers Get-Member et
PowerShell affichera les {4}membres{1} de l'objet. Ce sont les caractéristiques qui décrivent un
objet.
 
"@
 -f $cmdStyle,$reset,$defaultTokenStyle,$warnStyle,$highlight

$P2 = @"
Les objets .NET natifs auront des {0}propriétés{1} et des {0}méthodes{1}. Une propriété est une caractéristique qui
décrit l'objet comme le nom (Name) et l'ID du processus (ProcessID). Une méthode est une action programmatique
que vous pouvez effectuer en utilisant l'objet comme Kill. Ne vous inquiétez pas des méthodes maintenant.
Généralement, vous devriez pouvoir trouver une commande PowerShell qui implémente la méthode pour vous.
 
PowerShell étendra également un objet avec des membres supplémentaires:
 
  {2}AliasProperty{1} - un nom alternatif pour une autre propriété.
  {2}NoteProperty{1} - une note ou un commentaire statique sur l'objet.
  {2}ScriptProperty{1} - une propriété dont la valeur est dérivée de l'exécution du code PowerShell.
 
Vous pourriez également voir {2}PropertySet{1} qui est une collection de propriétés.
 
"@
 -f $highLight,$reset,$highLight2

$P3 = @"
Maintenant que vous avez une compréhension de base de la façon dont un objet sera décrit, exécutons
{0}Get-Member{1}.
 
$prompt {0}Get-Process{1} {2}pwsh{1} | {0}Get-Member{1}
 
"@
 -f $cmdStyle,$reset,$defaultTokenStyle

$P4 = @"
   TypeName: System.Diagnostics.Process
 
{3}Name MemberType Definition{2}
{3}---- ---------- ----------{2}
Handles AliasProperty Handles = Handlecount
Name AliasProperty Name = ProcessName
NPM AliasProperty NPM = NonpagedSystemMemorySize64
...
 
En haut de la sortie de {0}Get-Member{2}, vous verrez le {1}TypeName{2}. C'est le type d'objet.
Le cmdlet {0}Get-Process{2} écrit des objets {1}System.Diagnostics.Process{2} dans le pipeline.
Vous pouvez également voir les propriétés {4}Alias{2}. Cela signifie que lorsque vous devez référencer l'une de
ces propriétés, vous pouvez utiliser le nom d'alias, c'est-à-dire Handles, ou la définition, c'est-à-dire HandleCount.
 
"@
 -f $cmdStyle,$highLight,$reset,$table,$highLight2

$P5 = @"
En faisant défiler vers le bas, vous verrez les méthodes de l'objet processus.
 
Dispose Method void Dispose(), void IDisposable.Dispose()
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeService()
Kill Method void Kill(), void Kill(bool entireProcessTree)
...
 
La valeur dans la définition telle que {0}void{1}, {0}bool{1} et {0}int{1} indique quel type d'objet
la méthode renverra. Le type {0}void{1} signifie que la méthode ne renvoie pas de valeur. Vous
ne devriez pas avoir à vous soucier des méthodes d'un objet maintenant.
 
"@
 -f $highLight,$reset,$cmdStyle,$defaultTokenStyle

$P6 = @"
Ce qui vous importera, ce sont les propriétés.
 
HandleCount Property int HandleCount {{get;}}
HasExited Property bool HasExited {{get;}}
Id Property int Id {{get;}}
MachineName Property string MachineName {{get;}}
MainModule Property System.Diagnostics.ProcessModule MainModule {{get;}}
MainWindowHandle Property System.IntPtr MainWindowHandle {{get;}}
MainWindowTitle Property string MainWindowTitle {{get;}}
MaxWorkingSet Property System.IntPtr MaxWorkingSet {{get;set;}}
...
 
La valeur dans la définition comme {0}string{1}, {0}bool{1} et {0}int{1} indique le type de la valeur
de propriété. Les valeurs {2}get{1} et {2}set{1} indiquent si la propriété est en lecture seule, c'est-à-dire {2}get{1},
ou si elle peut être modifiée, c'est-à-dire {2}set{1}. Ne vous concentrez pas sur l'obtention et la définition
des propriétés. Les commandes PowerShell s'occuperont de ces tâches pour vous.
 
"@
 -f $highLight,$reset,$highLight3

$P7 = @"
Vous verrez également des membres {0}ScriptProperty{1}.
 
CommandLine ScriptProperty System.Object CommandLine {{get=…
Company ScriptProperty System.Object Company {{get=`$this.Mainmodule.FileVersion…
CPU ScriptProperty System.Object CPU {{get=`$this.TotalProcessorTime.TotalSe…
Description ScriptProperty System.Object Description {{get=`$this.Mainmodule.FileVer…
 
Ce sont des propriétés dérivées de l'exécution du code PowerShell. Vous pouvez utiliser ces propriétés
de la même manière que les autres propriétés.
 
Vous pouvez demander à {2}Get-Member{1} d'afficher des types de membres sélectionnés en utilisant le paramètre {3}MemberType{1}.
 
$prompt {2}Get-Process{1} {4}pwsh{1} | {2}Get-Member{1} {3}-MemberType{1} {4}ScriptProperty{1}
 
"@
 -f $highLight,$reset,$cmdStyle,$paramStyle,$defaultTokenStyle

$P8 = @"
 
Si vous voulez voir {0}toutes{1} les types de propriétés, dirigez la commande vers {2}Get-Member{1} comme ceci:
 
{2}Get-Process{1} {4}pwsh{1} | {2}Get-Member{1} {3}-MemberType{1} {4}Properties{1}
 
Une fois que vous avez identifié les propriétés que vous souhaitez utiliser, vous pouvez les utiliser dans PowerShell:
 
$prompt {2}Get-Process{1} | {2}Where-Object{1} {4}WS{1} {5}-gt{1} {6}10mb{1} |
>> {2}Sort-Object{1} WS {3}-Descending{1} | {2}Select-Object{1} {4}ID,Handles,WS,Name,StartTime{1} {3}-first{1} {6}5{1} |
>> {2}Format-Table{1}
>>
 
"@
 -f $highLight,$reset,$cmdStyle,$paramStyle,$defaultTokenStyle,$operatorStyle,$numberStyle

$P9 = @"
PowerShell concerne tout les objets. {0}Get-Member{1} est le meilleur moyen de découvrir à quoi ressemble un objet
afin que vous puissiez l'utiliser avec des commandes PowerShell et tirer parti du pipeline PowerShell.
 
Pour plus d'informations, lisez l'aide pour {0}Get-Member{1} et consultez les exemples.
 
"@
 -f $cmdStyle,$reset
#endregion
#region run the tutorial
Clear-Host
$title
$Intro
Get-Process pwsh | Out-Host
pause
$P1
pause
Clear-Host
$P2
pause
Clear-Host
$P3
pause
$P4
pause
$P5
pause
Clear-Host
$P6
pause
Clear-Host
$P7
pause
"`e[2A"
Get-Process -id $pid | Get-Member -MemberType ScriptProperty | Out-Host
pause
Clear-Host
$P8
pause
"`e[2A"
Get-Process | Where-Object WS -gt 10mb | Sort-Object WS -Descending |
Select-Object ID,Handles,WS,Name,StartTime -first 5 | Format-Table | Out-Host
pause
Clear-Host
$P9
#endregion

if ($Full) {
  #this is the last lesson in the set. No action needed.
}
elseif ($menu) {
    Start-PSTutorial
}