Bases
Commandes et aide
Get-Help Get-Process # show help for cmdlet Get-Help Get-Process -Online # open online docs Get-Command *service* # find commands by name Get-Alias ls # show alias target
Alias courants
ls → Get-ChildItemLister les fichiers et répertoires
cd → Set-LocationChanger de répertoire
cp → Copy-ItemCopier un fichier ou répertoire
mv → Move-ItemDéplacer ou renommer
rm → Remove-ItemSupprimer un fichier ou répertoire
cat → Get-ContentLire le contenu d'un fichier
echo → Write-OutputAfficher dans le pipeline
cls → Clear-HostEffacer la console
Variables
Bases des variables
$name = "Alice" # string $count = 42 # integer $pi = 3.14 # double $list = @(1, 2, 3) # array $hash = @{a=1; b=2} # hashtable
Variables automatiques
$_Objet courant du pipeline
$PSVersionTableInformations de version PowerShell
$HOMERépertoire personnel de l'utilisateur
$PWDRépertoire courant
$nullValeur nulle
$true / $falseConstantes booléennes
$ErrorTableau des erreurs récentes
$LASTEXITCODECode de sortie de la dernière commande native
Variables d'environnement
$env:PATH # read env var $env:MY_VAR = "value" # set env var Get-ChildItem Env: # list all env vars
Opérateurs
Opérateurs de comparaison
-eq -neÉgal / différent
-gt -ltSupérieur / inférieur
-ge -leSupérieur ou égal / inférieur ou égal
-like -notlikeCorrespondance avec joker (*, ?)
-match -notmatchCorrespondance regex
-containsLa collection contient la valeur
-in -notinValeur dans la collection
Opérateurs logiques et autres
-and -or -notOpérateurs logiques
!NON logique (alias)
-replaceRemplacement regex : 'hi' -replace 'h','b'
-split -joinDiviser / joindre des chaînes
..Intervalle : 1..5 → 1,2,3,4,5
?:Ternaire (v7+) : $x ? 'yes' : 'no'
Flux de contrôle
if / elseif / else
if ($age -ge 18) { "Adult" } elseif ($age -ge 13) { "Teen" } else { "Child" }
switch
switch ($color) { "red" { "Stop" } "green" { "Go" } default { "Unknown" } }
Boucles
foreach ($item in $list) { $item } for ($i=0; $i -lt 5; $i++) { $i } while ($x -lt 10) { $x++ } 1..5 | ForEach-Object { $_ * 2 }
Fonctions
Définir des fonctions
function Get-Greeting { param([string]$Name = "World") "Hello, $Name!" } Get-Greeting -Name "Alice"
Paramètres avancés
function Copy-SafeFile { [CmdletBinding()] param( [Parameter(Mandatory)][string]$Path, [Parameter(Mandatory)][string]$Dest ) Copy-Item $Path $Dest -WhatIf:$WhatIfPreference }
Objets et pipeline
Bases du pipeline
Get-Process | Sort-Object CPU -Desc | Select-Object -First 5 Get-Service | Where-Object Status -eq "Running" Get-ChildItem | Measure-Object -Property Length -Sum
Cmdlets de pipeline clés
Where-ObjectFiltrer les objets : | Where {$_.CPU -gt 10}
Select-ObjectSélectionner des propriétés : | Select Name, CPU
Sort-ObjectTrier : | Sort CPU -Desc
ForEach-ObjectTransformer chaque objet : | ForEach {$_.Name}
Measure-ObjectCompter, sommer, moyenner, min, max
Group-ObjectRegrouper par valeur de propriété
Format-TableAfficher en tableau : | ft -Auto
Export-CsvExporter en CSV : | Export-Csv out.csv
Fichiers
Opérations sur les fichiers
Get-Content log.txt # read file Set-Content out.txt "hello" # write (overwrite) Add-Content out.txt "more" # append Get-Content log.txt | Select-String "error" # grep
Cmdlets de chemin et fichier
Test-Path $pathVérifier si fichier/répertoire existe
New-Item -Type FileCréer un fichier
New-Item -Type DirectoryCréer un répertoire
Resolve-PathObtenir le chemin absolu
Join-PathCombiner des segments de chemin
Split-PathObtenir le parent ou la feuille
Get-ItemPropertyAttributs et métadonnées du fichier
Remove-Item -RecurseSupprimer un répertoire récursivement
Chaînes
Bases des chaînes
"Hello, $name" # interpolation (double quotes) 'Hello, $name' # literal (single quotes) "Length: $($list.Count)" # expression in string @" Multi-line here-string with $name "@
Méthodes de chaîne
.ToUpper() / .ToLower()Changer la casse
.Trim()Supprimer les espaces de début/fin
.Split(',')Diviser en tableau
.Replace('a','b')Remplacer une sous-chaîne
.StartsWith() / .EndsWith()Vérifier le préfixe / suffixe
.Substring(0,5)Extraire une sous-chaîne
.Contains('text')Vérifier si contient
-f operator'{0} is {1}' -f 'sky','blue'
Modules
Gestion des modules
Get-Module -ListAvailable # installed modules Find-Module -Name Az* # search gallery Install-Module -Name Pester # install from gallery Import-Module ActiveDirectory # load module
Commandes de module
Get-ModuleLister les modules chargés
Import-ModuleCharger un module dans la session
Remove-ModuleDécharger un module de la session
Update-ModuleMettre à jour un module installé
Get-Command -Module XLister les commandes dans un module
$env:PSModulePathChemins de recherche de modules
Motifs courants
Gestion des erreurs
try { Get-Item "C:\missing" -ErrorAction Stop } catch { "Error: $_" } finally { "Cleanup here" }
Politique d'exécution et remoting
Get-ExecutionPolicyAfficher la politique de script actuelle
Set-ExecutionPolicy RemoteSignedAutoriser les scripts locaux
Enter-PSSession -Computer SRV1Session distante interactive
Invoke-Command -Computer SRV1 -Script {}Exécuter un bloc de script à distance
Start-Job { long-task }Exécuter une tâche en arrière-plan
Receive-Job -Id 1Obtenir la sortie d'une tâche en arrière-plan