-
01 - Introduction à Powershell
-
02 - Commandes de base Powershell
-
03 - Navigation dans le système
-
04 - Gestion des utilisateurs locaux
-
05 - Les bases du scripting Powerhshell
-
06 - Gestion des utilisateurs Active Directory
-
07 - Automatisation des taches de gestion utilisateurs
-
08 - Automatisation des processus système
-
09 - Script de maintenance serveur
-
10 - Gestion avancée en PowerShell
-
11 - Formater les sorties des scripts
-
12 - Gestion des fichiers de log
-
13 - Etude de cas - Automatisation de taches courantes
-
14 - Optimisation des scripts et bonnes pratiques
-
16 - Algorithmie et Powershell
-
QCM de fin de parcours
11.1 Utilisation des formats de sortie
1. Utilisation des formats de sortie
1.1. Formats de base : Tableau, Liste, Large
PowerShell propose plusieurs formats natifs pour afficher les données :
- Tableau (Format-Table) : Idéal pour comparer des objets avec des propriétés communes.
- Liste (Format-List) : Affiche toutes les propriétés d’un objet sous forme de liste.
- Large (Format-Wide) : Affiche une seule propriété par ligne (compact).
1.1.1. Format Tableau (Format-Table)
Exemple :
# Lister les processus avec un format tableau Get-Process | Format-Table -Property Id, Name, CPU, WorkingSet -AutoSize # Limiter à 10 processus et trier par CPU Get-Process | Sort-Object -Property CPU -Descending | Select-Object -First 10 | Format-Table -AutoSize
Explications :
- -Property : Spécifie les propriétés à afficher.
- -AutoSize : Ajuste la largeur des colonnes automatiquement.
Sortie :
Id Name CPU WorkingSet -- ---- --- ---------- 1234 chrome 25.5 12345678 5678 powershell 8.2 567890 ...
1.1.2. Format Liste (Format-List)
Exemple :
# Afficher les détails d'un service en liste Get-Service -Name "Spooler" | Format-List -Property *
Explications :
- Affiche toutes les propriétés (*) ou celles spécifiées.
- Utile pour voir les détails complets d’un objet.
Sortie :
Name : Spooler DisplayName : Spouleur d'impression Status : Running ...
1.1.3. Format Large (Format-Wide)
Exemple :
# Lister uniquement les noms des services (format compact) Get-Service | Format-Wide -Property Name -Column 3
Explications :
- -Column : Définit le nombre de colonnes (ici, 3).
Sortie :
AeLookupSvc AppIDSvc Appinfo AppMgmt AppReadiness AppXSvc ...
1.1.4. Personnalisation avancée avec @{}
Exemple :
# Afficher les processus avec une colonne "Mem (Mo)" calculée
Get-Process | Format-Table -Property Name, Id, @{
Name = "Mem (Mo)"
Expression = { [math]::Round($_.WorkingSet / 1MB, 2) }
}, CPU
Explications :
- @{ Name = "Mem (Mo)"; Expression = { ... } } : Crée une colonne personnalisée.
- $_.WorkingSet / 1MB : Convertit la mémoire de octets en Mo.
Sortie :
Name Id Mem (Mo) CPU ---- -- -------- --- chrome 1234 120.5 25.5 powershell 5678 55.3 8.2 ...
1.2. Export vers des fichiers (CSV, HTML, TXT)
1.2.1. Export CSV (Export-Csv)
Exemple :
# Exporter les services en cours d'exécution vers un CSV
Get-Service | Where-Object { $_.Status -eq "Running" } |
Select-Object -Property Name, DisplayName, Status |
Export-Csv -Path "C:\Temp\ServicesRunning.csv" -NoTypeInformation -Encoding UTF8
Explications :
- -NoTypeInformation : Supprime la ligne d’en-tête de type.
- -Encoding UTF8 : Garantit la compatibilité avec Excel.
Contenu du CSV :
"Name","DisplayName","Status" "AeLookupSvc","Application Experience","Running" "Appinfo","Service d'informations d'application","Running" ...
1.2.2. Export HTML (ConvertTo-Html)
Exemple :
# Générer un rapport HTML des disques
Get-Volume | Select-Object -Property DriveLetter, FileSystemLabel, @{
Name = "Size (Go)"
Expression = { [math]::Round($_.Size / 1GB, 2) }
}, @{
Name = "Free (Go)"
Expression = { [math]::Round($_.SizeRemaining / 1GB, 2) }
} | ConvertTo-Html -Title "Rapport Disques" | Out-File "C:\Temp\DisksReport.html"
Explications :
- ConvertTo-Html : Convertit les objets en tableau HTML.
- -Title : Ajoute un titre au rapport.
1.2.3. Export TXT (Out-File)
Exemple :
# Exporter la liste des utilisateurs locaux vers un fichier texte Get-LocalUser | Format-Table -AutoSize | Out-File "C:\Temp\LocalUsers.txt"
Explications :
- Out-File : Redirige la sortie vers un fichier texte.
1.3. Travaux pratiques : Formater la sortie des journaux d’événements
Énoncé de l’exercice :
Objectif :
- Récupérer les 10 dernières erreurs du journal System.
- Formater la sortie pour afficher :
- TimeCreated (date/heure),
- Id (ID de l’événement),
- Message (tronqué à 50 caractères),
- ProviderName (source).
- Exporter les résultats :
- En tableau dans la console.
- En CSV (C:\Temp\SystemErrors.csv).
- En HTML (C:\Temp\SystemErrors.html) avec un titre.
Corrigé :
# Récupérer les 10 dernières erreurs
$errors = Get-WinEvent -LogName System -FilterXPath "*[System[Level=2]]" -MaxEvents 10
# Afficher en tableau dans la console
$errors | Format-Table -Property TimeCreated, Id, @{
Name = "Message"
Expression = { $_.Message.Substring(0, [math]::Min(50, $_.Message.Length)) }
}, ProviderName -AutoSize
# Exporter en CSV
$errors | Select-Object -Property TimeCreated, Id, @{
Name = "Message"
Expression = { $_.Message.Substring(0, [math]::Min(50, $_.Message.Length)) }
}, ProviderName |
Export-Csv -Path "C:\Temp\SystemErrors.csv" -NoTypeInformation -Encoding UTF8
# Exporter en HTML
$errors | Select-Object -Property TimeCreated, Id, @{
Name = "Message"
Expression = { $_.Message.Substring(0, [math]::Min(50, $_.Message.Length)) }
}, ProviderName |
ConvertTo-Html -Title "Dernières erreurs système" |
Out-File "C:\Temp\SystemErrors.html"
Explications :
- Substring(0, [math]::Min(50, $_.Message.Length)) : Tronque le message à 50 caractères.
- ConvertTo-Html : Génère un rapport HTML avec un titre.
Les commentaires ne sont pas activés sur ce cours.