Dans la première partie, nous avons défini deux concepts clés de PowerShell : le pipeline et l’objet. Dans la deuxième partie, j’ai expliqué ce que sont les objets et le pipeline. Dans la troisième partie, nous avons découvert le système de fichiers et les fournisseurs.
– Aujourd’hui, nous allons examiner le travail interactif avec les données dans la console, ainsi que les alertes et les notifications.
- Chapitre un : Travail interactif avec les données dans la console.
- Ce que
Out-ConsoleGridViewpeut faire : - Exemples d’utilisation de
Out-ConsoleGridView- Utilisation de base — afficher un tableau avec possibilité de sélection interactive. (case à cocher)
- Sélection d’une seule ligne avec retour obligatoire du résultat. (radio)
- Filtrage et tri de grands tableaux
- Gestion interactive des processus :
- Sélection de fichiers pour l’archivage :
- Sélection d’un élément pour une analyse détaillée :
Chapitre un : Travail interactif avec les données dans la console.
Out-ConsoleGridView. Interface graphique dans la console PowerShell.
❗ Important : Tous les outils décrits ci-dessous nécessitent PowerShell 7.2 ou plus récent.
Out-ConsoleGridView est un tableau interactif, directement dans la console PowerShell, permettant de :
- visualiser les données sous forme de tableau ;
- filtrer et trier les colonnes ;
- sélectionner des lignes avec le curseur — pour les transmettre plus loin dans le pipeline ;
- et bien plus encore.
Out-ConsoleGridView fait partie du module Microsoft.PowerShell.ConsoleGuiTools. Pour l’utiliser, vous devez d’abord installer ce module.
Pour installer le module, exécutez la commande suivante dans PowerShell :
Install-Module Microsoft.PowerShell.ConsoleGuiTools -Scope CurrentUser

Install-Module télécharge et installe le module spécifié depuis le référentiel dans le système. Analogues : pip install en Python ou npm install en Node.js.
📎 Paramètres clés de Install-Module
| Paramètre | Description |
|---|---|
-Name | Nom du module à installer. |
--Scope | Portée de l’installation : AllUsers (par défaut, nécessite des droits d’administrateur) ou CurrentUser (ne nécessite pas de droits d’administrateur). |
-Repository | Spécifie le référentiel, par exemple PSGallery. |
-Force | Installation forcée sans confirmation. |
-AllowClobber | Autorise l’écrasement des commandes existantes. |
-AcceptLicense | Accepte automatiquement la licence du module. |
-RequiredVersion | Installe une version spécifique du module. |
Après l’installation, vous pouvez transmettre n’importe quelle sortie à Out-ConsoleGridView pour un travail interactif.
# Exemple classique : affichage de la liste des processus dans un tableau interactif
Get-Process | Out-ConsoleGridView
Interface :
- Filtrage : Commencez simplement à taper du texte, et la liste sera filtrée à la volée.
- Navigation : Utilisez les touches fléchées pour vous déplacer dans la liste.
- Sélection : Appuyez sur
Espacepour sélectionner/désélectionner un élément. - Sélection multiple :
Ctrl+Apour sélectionner tous les éléments,Ctrl+Dpour désélectionner tout. - Confirmation : Appuyez sur
Entréepour renvoyer les objets sélectionnés. - Annulation : Appuyez sur
Échappour fermer la fenêtre sans renvoyer de données.
Ce que Out-ConsoleGridView peut faire :
- Afficher des données tabulaires directement dans la console sous forme de tableau interactif avec navigation par lignes et colonnes.
- Trier les colonnes en appuyant sur les touches.
- Filtrer les données à l’aide de la recherche.
- Sélectionner une ou plusieurs lignes avec retour du résultat.
- Travailler dans une console propre sans fenêtres GUI.
- Supporter un grand nombre de lignes avec défilement.
- Supporter différents types de données (chaînes, nombres, dates, etc.).
Exemples d’utilisation de Out-ConsoleGridView
Utilisation de base — afficher un tableau avec possibilité de sélection interactive. (case à cocher)
Import-Module Microsoft.PowerShell.ConsoleGuiTools
$data = Get-Process | Select-Object -First 30 -Property Id, ProcessName, CPU, WorkingSet
# Afficher le tableau avec possibilité de filtrage, de tri et de sélection de lignes
$selected = $data | Out-ConsoleGridView -Title "Select process(es)" -OutputMode Multiple
$selected | Format-Table -AutoSize
Affiche une liste de processus dans un tableau de console interactif. Vous pouvez filtrer par nom, trier les colonnes et sélectionner des processus. Les processus sélectionnés sont renvoyés dans la variable $selected.
Sélection d’une seule ligne avec retour obligatoire du résultat. (radio)
$choice = Get-Service | Select-Object -First 20 | Out-ConsoleGridView -Title "Select a service" -OutputMode Single
Write-Host "You selected service: $($choice.Name)"
L’utilisateur sélectionne une seule ligne (service). -OutputMode Single interdit la sélection multiple.
Filtrage et tri de grands tableaux
$data = 1..1000 | ForEach-Object {
[PSCustomObject]@{
Number = $_
Square = $_ * $_
Cube = $_ * $_ * $_
}
}
$data | Out-ConsoleGridView -Title "Numbers and powers" -OutputMode Multiple
Affiche un tableau de 1000 lignes avec des nombres et leurs puissances.
Gestion interactive des processus :
Vous pouvez sélectionner plusieurs processus à arrêter. Le paramètre -OutputMode Multiple indique que nous voulons renvoyer tous les éléments sélectionnés.
# Transférer les résultats via le pipeline.
# Arrêter les processus sélectionnés avec le paramètre -WhatIf pour un aperçu.
# Pour cela, définissons la variable $procsToStop
$procsToStop = Get-Process | Out-ConsoleGridView -OutputMode Multiple
# Si quelque chose a été sélectionné, transférer les objets plus loin dans le pipeline
if ($procsToStop) {
$procsToStop | Stop-Process -WhatIf
}
Sélection de fichiers pour l’archivage :
Trouvons tous les fichiers .log dans le dossier, sélectionnons ceux dont nous avons besoin et créons une archive à partir d’eux.
$filesToArchive = Get-ChildItem -Path C:\Logs -Filter "*.log" -Recurse | Out-ConsoleGridView -OutputMode Multiple
❗ Soyez prudent avec la récursion
if ($filesToArchive) {
Compress-Archive -Path $filesToArchive.FullName -DestinationPath C:\Temp\LogArchive.zip
# Ajouter un message de succès
Write-Host "✅ Archivage terminé avec succès !" -ForegroundColor Green
}
Sélection d’un élément pour une analyse détaillée :
Modèle « Drill-Down » — du général au détail avec Out-ConsoleGridView
Souvent, lorsque nous travaillons avec des objets système, nous sommes confrontés à un dilemme :
- Si nous demandons toutes les propriétés pour tous les objets (
Get-NetAdapter | Format-List *), la sortie sera énorme et illisible. - Si nous affichons un tableau concis, nous perdrons des détails importants.
- Parfois, tenter d’obtenir toutes les données en une seule fois peut entraîner une erreur si l’un des objets contient des valeurs incorrectes.
La solution à ce problème est le modèle « Drill-Down » (détail ou « plongée en profondeur »). Son essence est simple :
- Étape 1 (Aperçu) : Afficher à l’utilisateur une liste d’éléments propre, concise et sûre pour la sélection.
- Étape 2 (Détail) : Une fois que l’utilisateur a sélectionné un élément spécifique, lui montrer toutes les informations disponibles pour cet élément.
Exemple pratique : Création d’un explorateur d’adaptateurs réseau
Implémentons ce modèle en utilisant la commande Get-NetAdapter.
Tâche : Afficher d’abord une liste concise des adaptateurs réseau. Après en avoir sélectionné un, ouvrir une deuxième fenêtre avec toutes ses propriétés.
Code prêt à l’emploi :
# --- Étape 1 : Sélection de l'adaptateur dans la liste concise ---
$adapterList = Get-NetAdapter | Select-Object Name, InterfaceDescription, Status, LinkSpeed
$selectedAdapter = $adapterList | Out-ConsoleGridView -Title "ÉTAPE 1 : Sélectionnez un adaptateur réseau"
# --- Étape 2 : Affichage des informations détaillées ou du message d'annulation ---
if ($null -ne $selectedAdapter) {
# Obtenir TOUTES les propriétés pour l'adaptateur SÉLECTIONNÉ
$detailedInfoObject = Get-NetAdapter -Name $selectedAdapter.Name | Select-Object *
# Utiliser notre astuce avec .psobject.Properties pour transformer l'objet en un tableau "Nom-Valeur" pratique
$detailedInfoForGrid = $detailedInfoObject.psobject.Properties | Select-Object Name, Value
# Ouvrir la DEUXIÈME fenêtre GridView avec toutes les informations
$detailedInfoForGrid | Out-ConsoleGridView -Title "ÉTAPE 2 : Informations complètes sur '$($selectedAdapter.Name)'"
} else {
Write-Host "Opération annulée. Aucun adaptateur n'a été sélectionné." -ForegroundColor Yellow
}
Analyse étape par étape
- Création d’une liste « sûre » :
$adapterList = Get-NetAdapter | Select-Object Name, InterfaceDescription, Status, LinkSpeedNous ne transmettons pas la sortie deGet-NetAdapterdirectement. Au lieu de cela, nous créons de nouveaux objets « propres » à l’aide deSelect-Object, en n’incluant que les propriétés dont nous avons besoin pour l’aperçu. Cela garantit que les données problématiques qui ont causé l’erreur seront ignorées. - Première fenêtre interactive :
$selectedAdapter = $adapterList | Out-ConsoleGridView ...Le script affiche la première fenêtre et arrête son exécution, attendant votre sélection. Dès que vous sélectionnez une ligne et appuyez surEntrée, l’objet correspondant à cette ligne sera enregistré dans la variable$selectedAdapter. - Vérification de la sélection :
if ($null -ne $selectedAdapter)C’est une vérification cruciale. Si l’utilisateur appuie surÉchapou ferme la fenêtre, la variable$selectedAdaptersera vide ($null). Cette vérification empêche l’exécution du reste du code et l’apparition d’erreurs. - Obtention des informations complètes :
$detailedInfoObject = Get-NetAdapter -Name $selectedAdapter.NameC’est le point clé du modèle. Nous nous adressons à nouveau àGet-NetAdapter, mais cette fois, nous demandons un seul objet par son nom, que nous avons pris de l’élément sélectionné à la première étape. Nous obtenons maintenant l’objet complet avec toutes ses propriétés. - Transformation pour la deuxième fenêtre :
$detailedInfoForGrid = $detailedInfoObject.psobject.Properties | ...Nous utilisons une astuce puissante que vous connaissez déjà pour « dérouler » cet objet complexe en une longue liste de paires « Nom de la propriété » | « Valeur », ce qui est idéal pour l’affichage dans un tableau. - Deuxième fenêtre interactive :
$detailedInfoForGrid | Out-ConsoleGridView ...Une deuxième fenêtre apparaît à l’écran, cette fois avec des informations exhaustives sur l’adaptateur que vous avez sélectionné. - Créez un dossier permanent pour vos outils, si ce n’est pas déjà fait. Par exemple :
C:\PowerShell\Scripts - Placez votre fichier
Get-SystemMonitor.ps1dans ce dossier. - Ajoutez ce dossier à la variable système
PATH, - Ouvrez votre fichier de profil PowerShell :
notepad $PROFILE - Ajoutez la ligne suivante :
# Alias pour le moniteur système Set-Alias -Name sysmon -Value "Get-SystemMonitor.ps1"Notez le point clé : Puisque le dossier avec le script est déjà dansPATH, nous n’avons plus besoin de spécifier le chemin complet vers le fichier ! Nous nous référons simplement à son nom. Cela rend votre profil plus propre et plus fiable. Si jamais vous déplacez le dossierC:\PowerShell\Scripts, vous n’aurez qu’à mettre à jour la variablePATH, et votre fichier de profil restera inchangé. - Par son nom complet (fiable, pour une utilisation dans d’autres scripts) :
Get-SystemMonitor.ps1 Get-SystemMonitor.ps1 -Resource storage - Par un alias court (pratique, pour un travail interactif) :
sysmon sysmon -Resource memory