fr-FR/tutorials/Invoke-PSBasicsTutorial.ps1

# An interactive tutorial for PowerShell basics

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

if ($isWindows) {
    $root = "\"
}
else {
    $root = "/"
}

$title = "$($titleStyle)Fondamentaux Essentiels de PowerShell$($reset)"

#region content
$intro = @"
 
Pour commencer avec PowerShell, il y a quelques concepts et termes essentiels que vous devez comprendre.
Il n'st pas nécessaire de maîtriser PowerShell avant de commencer à l'utiliser, mais il est
important d'avoir une compréhension de base de son fonctionnement afin de savoir à quoi s'attendre.
 
"@


$P1 = @"
{0}Qu'est-ce que PowerShell?{1}
 
PowerShell se compose de deux composants principaux : le {2}shell{1} et le {2}langage de script{1}.
Le shell est l'interface de ligne de commande interactive où vous pouvez exécuter des commandes et
des scripts. Le langage de script est le langage que vous utilisez pour écrire des scripts et
automatiser des tâches. Les mêmes commandes et le même langage sont utilisés dans les deux cas.
En d'autres termes, si vous pouvez exécuter une commande dans le shell, vous pouvez aussi l'utiliser
dans un script.
 
PowerShell est basé sur le framework .NET et adopte une approche orientée {3}objet{1}. Tout ce avec
quoi vous travaillez dans PowerShell est un objet, et non du texte. Cependant, {4}il n'est pas
nécessaire{1} d'être développeur .NET pour utiliser PowerShell.
 
"@
 -f $highLight3, $reset,$highLight,$highLight2,$PSStyle.Underline

$P2 = @"
Les commandes PowerShell sont appelées {3}cmdlets{1}. Une cmdlet est une commande légère utilisée pour
effectuer une tâche spécifique. Les commandes PowerShell suivent une convention de nommage verbe-nom, ce qui
les rend faciles à trouver et à utiliser. Ce que fait la commande {0}Get-Process{1} devrait être clair.
 
$prompt {0}Get-Process{1} {2}pwsh{1}
"@
 -f $cmdStyle, $reset,$defaultTokenStyle,$highLight

$P3 = @"
Le résultat d'une commande PowerShell est techniquement un objet, mais il est formaté pour le rendre
plus facile à lire.
 
"@


$P4 = @"
{0}Alias{1}
 
PowerShell a un concept d'alias. Un alias est un nom court pour une cmdlet. Ils sont destinés
à vous faire gagner du temps lors de la saisie de commandes ou à faciliter la transition pour les
utilisateurs d'autres shells.
 
$prompt {2}dir{1} {3}$root{1}
 
"@
 -f $highLight3, $reset,$cmdStyle,$defaultTokenStyle

$P5 = @"
Cependant, vous n'exécutez pas la commande native {3}dir{1}. Vous exécutez un alias pour la
commande native PowerShell {0}Get-ChildItem.{1} L'exécution de cette commande est identique à
l'utilisation de l'alias.
 
$prompt {0}Get-ChildItem{1} {2}$root{1}
 
"@
 -f $cmdStyle,$reset,$defaultTokenStyle,$highLight

$P6 = @"
Cela signifie que vous devez utiliser les paramètres de la commande PowerShell avec l'alias.
 
$prompt {0}dir{1} {2}`$home{1} {3}-Directory -Hidden{1}
"@
 -f $cmdStyle,$reset,$defaultTokenStyle,$paramStyle

$P7 = @"
Vous pouvez utiliser la cmdlet {0}Get-Alias{1} pour découvrir les alias définis dans PowerShell.
 
"@
 -f $cmdStyle,$reset,$highLight

$P8 = @"
{0}Le Pipeline{1}
 
Le paradigme PowerShell est basé sur le concept d'objets passant par un {6}pipeline{1}. Le
pipeline est indiqué par le symbole |.
 
Pensez au pipeline comme à un tapis roulant où les objets sont passés d'une commande à une autre.
Chaque commande dans le pipeline effectue une tâche spécifique sur l'objet puis le passe à la commande
suivante. Cela vous permet de créer des commandes et des scripts complexes en combinant des commandes simples.
 
$prompt {2}Get-Process{1} | {2}Sort-Object{1} {3}WorkingSet{1} {4}-Descending{1} | {2}Select-Object{1} {4}-first {5}5{1}
 
"@
 -f $highLight3, $reset,$cmdStyle,$defaultTokenStyle,$paramStyle,$numberStyle,$highlight

$P9 =@"
La première commande récupère tous les processus sur l'ordinateur local. Le résultat de cette commande
est une collection d'objets de processus. La deuxième commande trie la collection d'objets de processus
par la propriété WorkingSet dans l'ordre décroissant.
 
Vous apprendrez à découvrir les propriétés des objets avec {0}Get-Member{1}.
 
Les objets de processus triés sont ensuite passés à la troisième commande, {0}Select-Object{1},
qui sélectionne les cinq premiers objets. PowerShell affiche le résultat de la dernière commande dans
le pipeline.
 
Si vous souhaitez effectuer cette tâche fréquemment, vous pouvez placer les commandes dans un fichier script.
Lerésultat est le même que si vous aviez exécuté les commandes de manière interactive dans le shell,
sans avoirà retaper la commande.
 
"@
 -f $cmdStyle,$reset

$P10 = @"
{0}Variables{1}
 
Comme de nombreux langages de script et de shell, PowerShell comprend les variables. Une variable contient
une valeur, telle qu'une chaîne de texte ou un nombre. Utilisez le caractère {2}`${1} pour définir une variable.
 
$prompt {3}`$i{1} = {4}123{1}
$prompt {3}`$n{1} = {5}"pw*"{1}
 
"@
 -f $highLight3, $reset,$highLight,$varStyle,$numberStyle,$stringStyle

$P11 = @"
Vous pouvez également enregistrer le résultat d'une commande ou expression PowerShell dans une variable.
 
$prompt {3}`$files{1} {2}={1} {0}Get-ChildItem{1} {3}-Path{1} {4}`$HOME{1} {3}-file{1} | {0}Sort-Object{1} {3}-Property{1} {6}LastWriteTime{1} | {0}Select-Object{1} {3}-first{1} {5}5{1}
 
"@
 -f $cmdStyle,$reset,$operatorStyle,$paramStyle,$varStyle,$numberStyle,$defaultTokenStyle

$P12 = @"
Lorsque vous souhaitez utiliser une variable, vous pouvez y faire référence par son nom avec le caractère `$.
 
$prompt {0}`$i{2}*{1}2{2}
"@
 -f $varStyle,$numberStyle,$reset

$P13 = @"
 
$prompt {0}Get-Process{1} {2}`$n{1}
"@
 -f $cmdStyle,$reset,$varStyle

$P14 = @"
Vous pouvez utiliser la variable dans une expression avec pipeline.
 
$prompt {0}`$files{1} | {2}Group-Object{1} {3}-property{1} {4}Extension{1} | {2}Sort-Object{0} {4}Count{1} {3}-Descending{1}
"@
 -f $varStyle,$reset,$cmdStyle,$paramStyle,$defaultTokenStyle

$P15 = @"
Notez que les objets peuvent changer dans le pipeline en fonction de la commande. La variable {2}`$files{1} contient
des objets de fichier. La commande {0}Group-Object{1} crée un nouveau type d'objet avec différentes propriétés. Ces
objets sont ensuite transmis à la commande {0}Sort-Object{1}.
 
Pouvez-vous deviner quelle commande vous exécuteriez pour obtenir toutes les variables PowerShell?
 
"@
 -f $cmdStyle,$reset,$highLight

$P16 = @"
$Prompt {0}Get-Variable{1}
"@
 -f $cmdStyle,$reset

$P17 = @"
PowerShell possède de nombreuses variables intégrées que vous pouvez utiliser.
 
$prompt {0}`$PSEdition{1}
"@
 -f $varStyle,$reset

$P17a = @"
$prompt {0}`$PSVersionTable{1}
"@
 -f $varStyle,$reset

$P18 = @"
 
Une fois que vous aurez terminé les autres tutoriels, vous devriez être en mesure de commencer à exécuter
des commandes PowerShell depuis la console.
 
"@

#endregion

#region Run the tutorial
Clear-Host

$title
$Intro
pause
$P1
pause
$P2
Get-Process pwsh | Out-Host
pause
$P3
pause
clear-host
$P4
Pause
#I am fudging the display
"`e[2A"
(dir $root | Select-Object -first 10 ) && "...`n" | Out-Host
pause
Clear-Host
$P5
"`e[2A"
(Get-ChildItem $root | Select-Object -first 10 | Out-Host) && "`e[1A...`n" #| Out-Default
Pause
Clear-Host
$P6
dir $home -Directory -Hidden | Select-Object -first 5  && "...`n"  | Out-Host
pause
$P7
pause
Clear-Host
$P8
pause
"`e[2A"
Get-Process| Sort-Object WorkingSet -Descending | Select-Object -first 5 | Out-Host
Pause
$P9
pause
Clear-Host
$P10
pause
$i = 123
$n = "pw*"
$P11
pause
$files =  Get-ChildItem -Path $HOME -file | Sort-Object -Property LastWriteTime | Select-Object -first 5
$P12
$i*2 | Out-Host
$P13
Get-Process $n | Out-Host
Pause
Clear-Host
$P14
$files | Group-Object -property Extension | Sort-Object Count -Descending | Out-Host
Pause

$P15
pause
$P16
(Get-Variable | Select-Object -first 10 | Out-Host) && "`e[1A...`n"
Pause
Clear-Host
$P17
$PSEdition | Out-Host
$P17a
$PSVersionTable | Out-Host
$P18
pause
#endregion

if ($full) {
    &$tutorials['Get-Command'] -Full
}
elseif ($Menu) {
    Start-PSTutorial
}