🔝 Retour à la Table des matières
Maintenant que vous comprenez ce qu'est un objet PowerShell, découvrons comment manipuler ces objets! PowerShell offre plusieurs cmdlets puissantes qui vous permettent de filtrer, trier et sélectionner les données exactement comme vous le souhaitez.
Cette cmdlet vous permet de sélectionner uniquement les propriétés qui vous intéressent, comme prendre uniquement certains ingrédients d'une recette.
# Afficher seulement le nom et la taille des fichiers
Get-ChildItem | Select-Object Name, LengthCette cmdlet vous permet de filtrer les objets selon des conditions, comme garder uniquement les ingrédients qui correspondent à vos critères.
# Afficher uniquement les processus qui utilisent plus de 100 MB de mémoire
Get-Process | Where-Object { $_.WorkingSet -gt 100MB }Cette cmdlet vous permet d'organiser vos objets dans un ordre spécifique, comme ranger vos ingrédients du plus léger au plus lourd.
# Trier les fichiers par taille (du plus petit au plus grand)
Get-ChildItem | Sort-Object LengthDans les exemples ci-dessus, vous avez peut-être remarqué le $_. C'est une variable spéciale qui représente l'objet courant dans le pipeline. Vous pouvez aussi utiliser $PSItem qui est exactement la même chose.
# Ces deux commandes sont identiques
Get-Process | Where-Object { $_.CPU -gt 10 }
Get-Process | Where-Object { $PSItem.CPU -gt 10 }# Sélectionner les 5 premiers fichiers
Get-ChildItem | Select-Object -First 5
# Sélectionner les 3 derniers processus
Get-Process | Select-Object -Last 3# Ajouter une propriété qui convertit la taille en MB
Get-ChildItem | Select-Object Name, @{
Name = 'SizeMB'
Expression = { $_.Length / 1MB }
}# Processus qui utilisent plus de 100MB ET contiennent "s" dans leur nom
Get-Process | Where-Object { $_.WorkingSet -gt 100MB -and $_.Name -like "*s*" }# Services avec des dépendances qui contiennent "Windows"
Get-Service | Where-Object { $_.DependentServices.Name -like "*Windows*" }# Trier les fichiers du plus grand au plus petit
Get-ChildItem | Sort-Object Length -Descending# Trier d'abord par extension, puis par taille
Get-ChildItem | Sort-Object Extension, LengthLa vraie puissance de PowerShell vient de la possibilité d'enchaîner ces commandes:
# Trouver les 5 processus qui consomment le plus de mémoire
Get-Process |
Where-Object { $_.WorkingSet -gt 50MB } |
Sort-Object WorkingSet -Descending |
Select-Object Name, @{
Name = 'MemoryMB'
Expression = { [math]::Round($_.WorkingSet / 1MB, 2) }
} -First 5- Affichez uniquement les services Windows qui sont actuellement en cours d'exécution
- Trouvez les 3 fichiers les plus volumineux dans votre dossier utilisateur
- Listez tous les processus qui contiennent la lettre "s" dans leur nom et utilisent plus de 50MB de mémoire
# Exercice 1
Get-Service | Where-Object { $_.Status -eq "Running" }
# Exercice 2
Get-ChildItem -Path $HOME -Recurse -File | Sort-Object Length -Descending | Select-Object -First 3
# Exercice 3
Get-Process | Where-Object { $_.Name -like "*s*" -and $_.WorkingSet -gt 50MB }- Utilisez
-eqpour "égal à",-gtpour "supérieur à",-ltpour "inférieur à" - Utilisez
-likeavec des jokers (*) pour les correspondances partielles de texte - Utilisez
Format-Table(ou l'aliasft) pour afficher les résultats en tableau - N'oubliez pas les accolades
{ }autour des conditions dansWhere-Object
Select-Object: Choisit les propriétés à afficherWhere-Object: Filtre les objets selon des conditionsSort-Object: Trie les objets selon une ou plusieurs propriétés- Le pipeline
|permet d'enchaîner ces commandes pour des opérations complexes $_représente l'objet courant dans le pipeline
Dans la prochaine section, nous découvrirons comment créer nos propres objets personnalisés avec [PSCustomObject] pour organiser nos données exactement comme nous le souhaitons.
💡 Astuce de pro: Pour des performances optimales avec de grandes quantités de données, utilisez la syntaxe simplifiée de Where-Object:
# Ancienne syntaxe
Get-Process | Where-Object { $_.Name -like "*s*" }
# Syntaxe simplifiée (plus rapide)
Get-Process | Where-Object Name -like "*s*"