Windows Server 2025 / Bases de PowerShell : objets, pipelines et requêtes

PowerShell travaille avec des objets contenant des propriétés plutôt qu'uniquement du texte à l'écran. Combinez les commandes de requête avec Where-Object, Select-Object et Sort-Object pour inspecter les informations du serveur en utilisant des conditions explicites.

Identifiez la version de PowerShell et consultez l’aide

Ces exemples en lecture seule ciblent Windows PowerShell 5.1 sur Windows Server 2025. Une session PowerShell 7 installée séparément peut avoir une compatibilité de module différente. Les comptes restreints peuvent voir moins d'informations même lorsqu'une requête ne nécessite normalement pas d'élévation.

$PSVersionTable
Get-Command Get-Service
Get-Help Get-Service -Examples

Get-Command vérifie la disponibilité ; Get-Help explique l'utilisation et les paramètres. Si l'aide locale est incomplète, consultez la référence officielle de Get-Service pour la même version plutôt que d'exécuter un script d'aide téléchargé. Les noms verbe-nom indiquent également l'intention : Get et Set effectuent différents types de tâches.

Inspectez les propriétés avant de traiter la sortie

Un objet de service a un nom, un nom d'affichage, un statut et d'autres propriétés. Travaillez avec ces champs plutôt que de couper le texte selon les positions des colonnes affichées. Voir Objets PowerShell et leurs propriétés.

Get-Service | Select-Object -First 5
Get-Service | Get-Member
Get-Service -Name WinRM | Select-Object Name,DisplayName,Status

Get-Member distingue les propriétés des méthodes. Les méthodes peuvent effectuer des actions, donc n’en invoquez pas une simplement parce que son nom semble utile. Cette leçon interroge et filtre ; elle ne démarre ni n'arrête les services.

Connectez les conditions avec un pipeline

La barre verticale transmet les objets d'une commande à la suivante. Ce pipeline sélectionne les services en cours d'exécution, les trie par nom et renvoie les colonnes choisies. $_ désigne l'objet courant :

Get-Service |
    Where-Object { $_.Status -eq 'Running' } |
    Sort-Object Name |
    Select-Object Name,DisplayName,Status

Pour comparaison, changez uniquement Running en Stopped, observez l'ensemble de résultats différent, puis restaurez Running. Le filtre change ; les services réels ne changent pas. -eq compare l'égalité, -ne l'inégalité, -gt vérifie qu’une valeur est supérieure à une autre, et -like recherche une correspondance avec un motif. Vérifiez les types de données lors de la comparaison de valeurs numériques plutôt que de supposer que le texte affiché se comporte comme des nombres.

Utilisez des variables et des unités explicites

Cette requête stocke des objets de disque fixe et calcule la capacité et l'espace libre en gibioctets (GiB). La constante 1GB de PowerShell vaut 1 073 741 824 octets ; les noms de colonnes montrent cette unité binaire.

$labDisks = Get-CimInstance Win32_LogicalDisk -Filter 'DriveType=3'
$labDisks | Select-Object DeviceID,
    @{Name='SizeGiB';Expression={[math]::Round($_.Size / 1GB,1)}},
    @{Name='FreeGiB';Expression={[math]::Round($_.FreeSpace / 1GB,1)}}

La variable contient des objets disque, et non un tableau formaté, et peut être filtrée à nouveau. Réservez Format-Table pour l’affichage final destiné au lecteur. Le mettre avant l'export CSV transforme les objets en données de formatage et fait perdre la structure de colonnes prévue. Les valeurs et le nombre de lignes dépendent des lecteurs réels.

Gardez les requêtes et les modifications distinctes

  1. Utilisez Get-Command et Get-Help pour identifier la commande et les paramètres.
  2. Enregistrez les valeurs actuelles avec des commandes de requête.
  3. Pour une commande de modification supportant -WhatIf, inspectez l'action proposée.
  4. Évaluez séparément les effets opérationnels et la récupération par rapport à l'aperçu.
  5. Conservez un fichier .ps1 lisible et enregistrez l'endroit où il doit s'exécuter.

Une commande manquante peut signifier une faute d'orthographe, un module absent ou une version différente de PowerShell ; ce n'est pas la même chose qu'un accès refusé. Ne désactivez pas la politique d'exécution et les fonctionnalités de sécurité ensemble pour faire fonctionner un script. Suivez les exigences de script et de signature approuvées par l'organisation.