Quels cmdlets PowerShell sont disponibles pour lister les rôles et fonctionnalités de Windows Server ?
Le cmdlet PowerShell principal pour lister les rôles et fonctionnalités installés sur Windows Server est Get-WindowsFeature du module ServerManager. Ce cmdlet reste inchangé depuis Windows Server 2025 et prend en charge les requêtes locales et distantes avec des options de filtrage complètes.
Commençons par vérifier que votre environnement PowerShell est prêt. Ouvrez PowerShell en tant qu'administrateur et vérifiez la disponibilité du module ServerManager.
Get-Module -ListAvailable ServerManagerCela affiche la version du module ServerManager. Sur Windows Server 2025, vous verrez la version 2.0.0.0 ou ultérieure. Importez le module explicitement s'il n'est pas chargé automatiquement :
Import-Module ServerManagerVérification : Exécutez Get-Command Get-WindowsFeature pour confirmer que le cmdlet est disponible.
Comment lister tous les rôles et fonctionnalités disponibles de Windows Server à l'aide de PowerShell ?
Commencez par examiner tous les rôles et fonctionnalités sur votre serveur local. Cela vous donne l'inventaire complet avant d'appliquer des filtres.
Get-WindowsFeatureCette commande affiche trois colonnes clés : Name (identifiant court), DisplayName (nom descriptif) et InstallState (Available, Installed ou Removed). La sortie montre des centaines de fonctionnalités disponibles sur votre installation de Windows Server.
Format-Table -AutoSize pour un meilleur alignement des colonnes sur les écrans larges, surtout lorsque vous travaillez avec des noms de fonctionnalités longs.Vérification : Comptez le nombre total de fonctionnalités avec (Get-WindowsFeature).Count - attendez-vous à plus de 400 éléments sur une installation complète de Windows Server.
Comment filtrer les résultats PowerShell pour n'afficher que les fonctionnalités installées de Windows Server ?
Le cas d'utilisation le plus courant pour l'audit de serveur est de n'afficher que les rôles et fonctionnalités installés. Filtrez les résultats en utilisant la propriété InstallState :
Get-WindowsFeature | Where-Object InstallState -eq "Installed"Syntaxe alternative utilisant l'abréviation de PowerShell et l'évaluation automatique des propriétés booléennes :
Get-WindowsFeature | ? InstalledLes deux commandes produisent des résultats identiques. La seconde utilise la capacité de PowerShell à évaluer automatiquement les propriétés booléennes.
Vérification : Comparez le nombre de fonctionnalités installées par rapport au nombre total de fonctionnalités : (Get-WindowsFeature | ? Installed).Count devrait être beaucoup plus petit que le nombre total.
Quelle est la syntaxe correcte pour interroger les rôles de Windows Server sur des machines distantes ?
Étendez vos requêtes aux serveurs distants en utilisant le paramètre ComputerName. Cela nécessite une configuration correcte de WinRM sur les serveurs cibles.
Get-WindowsFeature -ComputerName "DC01" | Where-Object InstalledPour les serveurs nécessitant des informations d'identification spécifiques, utilisez le paramètre Credential :
$cred = Get-Credential
Get-WindowsFeature -ComputerName "SRV02" -Credential $cred | Where-Object InstalledLe cmdlet Get-Credential demande un nom d'utilisateur et un mot de passe de manière sécurisée, les stockant dans un objet PSCredential.
Test-WSMan ServerName avant d'exécuter des requêtes de fonctionnalités. Cela permet de gagner du temps en identifiant les problèmes de connexion tôt.Vérification : La sortie inclut les mêmes colonnes mais interroge le serveur distant. Lors de l'utilisation d'alternatives Invoke-Command, vérifiez que la propriété PSComputerName affiche le nom du serveur cible.
Comment utiliser les caractères génériques pour trouver des fonctionnalités spécifiques de Windows Server avec PowerShell ?
Utilisez des motifs de caractères génériques pour trouver des technologies ou des groupes de fonctionnalités spécifiques. Cette approche est essentielle pour des audits de serveur ciblés et des vérifications de conformité.
Recherchez tous les composants liés à Hyper-V :
Get-WindowsFeature *Hyper-V* | Where-Object InstalledTrouvez des fonctionnalités liées au web en utilisant plusieurs caractères génériques :
Get-WindowsFeature *IIS*, *Web* | Where-Object InstalledLocalisez tous les composants Active Directory :
Get-WindowsFeature *AD*, *Domain* | Where-Object InstalledVérification : Chaque requête retourne uniquement les fonctionnalités correspondant au motif de caractères génériques. Utilisez Get-WindowsFeature *Hyper-V* sans le filtre Installed pour voir toutes les fonctionnalités Hyper-V (installées et disponibles).
Quelle est la différence entre les rôles et les fonctionnalités de Windows Server dans les requêtes PowerShell ?
Windows Server catégorise les composants en tant que Rôles (fonctions principales du serveur) ou Fonctionnalités (outils et utilitaires de support). Vous pouvez filtrer par FeatureType pour les séparer pour différents besoins de rapport.
Afficher uniquement les rôles installés :
Get-WindowsFeature | Where-Object { $_.Installed -and $_.FeatureType -eq "Role" }Afficher uniquement les fonctionnalités installées (pas les rôles) :
Get-WindowsFeature | Where-Object { $_.Installed -and $_.FeatureType -eq "Feature" }Formatez la sortie pour une meilleure lisibilité dans les rapports :
Get-WindowsFeature | Where-Object { $_.Installed -and $_.FeatureType -eq "Role" } | Format-Table Name, DisplayName, FeatureType -AutoSizeVérification : Les rôles incluent généralement des services majeurs comme "Web Server (IIS)", "DNS Server", "Active Directory Domain Services", tandis que les fonctionnalités incluent des outils de support comme "PowerShell ISE", "Telnet Client", "Windows PowerShell Web Access".
Comment interroger plusieurs serveurs Windows simultanément à l'aide de PowerShell ?
Utilisez Invoke-Command pour interroger plusieurs serveurs simultanément, ce qui est nettement plus rapide que les requêtes séquentielles lors de la gestion de grands environnements de serveurs.
$servers = @('SRV01', 'SRV02', 'DC01')
$results = Invoke-Command -ComputerName $servers -ScriptBlock {
Get-WindowsFeature | Where-Object Installed
}Affichez les résultats avec identification du serveur pour un rapport clair :
$results | Select-Object PSComputerName, Name, DisplayName, InstallState | Format-Table -AutoSizePour les environnements nécessitant une authentification, incluez les informations d'identification :
$cred = Get-Credential
$results = Invoke-Command -ComputerName $servers -Credential $cred -ScriptBlock {
Get-WindowsFeature | Where-Object { $_.Installed -and $_.FeatureType -eq "Role" }
}-AsJob avec Invoke-Command pour des listes de serveurs très grandes (50+ serveurs) pour exécuter des requêtes en arrière-plan et éviter les expirations de session.Vérification : Chaque résultat inclut PSComputerName montrant quel serveur a fourni les données. Comptez les serveurs uniques avec : ($results | Select-Object PSComputerName -Unique).Count
Quelles sont les meilleures pratiques pour exporter des listes de fonctionnalités de Windows Server vers des fichiers CSV ?
Exportez vos résultats vers des fichiers CSV pour la documentation, les rapports de conformité ou une analyse plus approfondie dans Excel et d'autres outils.
Exportation de base pour un seul serveur :
Get-WindowsFeature | Where-Object Installed | Export-Csv -Path "C:\InstalledFeatures.csv" -NoTypeInformationPour les environnements multi-serveurs avec un formatage approprié :
$servers = @('SRV01', 'SRV02', 'DC01')
$allFeatures = Invoke-Command -ComputerName $servers -ScriptBlock {
Get-WindowsFeature | Where-Object Installed | Select-Object Name, DisplayName, InstallState, FeatureType
}
$allFeatures | Select-Object PSComputerName, Name, DisplayName, InstallState, FeatureType | Export-Csv -Path "C:\MultiServerFeatures.csv" -NoTypeInformationCréez des fichiers séparés pour les rôles et les fonctionnalités pour améliorer l'organisation des rapports :
$installed = Get-WindowsFeature | Where-Object Installed
$installed | Where-Object { $_.FeatureType -eq "Role" } | Export-Csv -Path "C:\InstalledRoles.csv" -NoTypeInformation
$installed | Where-Object { $_.FeatureType -eq "Feature" } | Export-Csv -Path "C:\InstalledFeatures.csv" -NoTypeInformationVérification : Ouvrez les fichiers CSV dans Excel ou utilisez Import-Csv "C:\InstalledFeatures.csv" | Measure-Object pour compter les enregistrements exportés et confirmer l'intégrité des données.
Comment dépanner les problèmes courants de PowerShell lors de la liste des fonctionnalités de Windows Server ?
Plusieurs problèmes courants peuvent survenir lors de l'utilisation de Get-WindowsFeature, en particulier dans les environnements d'entreprise avec des configurations de serveur mixtes.
Erreur "Get-WindowsFeature: The term is not recognized" :
Cela se produit lorsque le module ServerManager n'est pas chargé ou que vous exécutez sur un OS client. Importez le module explicitement :
Import-Module ServerManagerSur les clients Windows 10/11, installez les outils RSAT :
Add-WindowsCapability -Online -Name Rsat.ServerManager.Tools~~~~0.0.1.0Problèmes d'accès à distance refusé :
Configurez WinRM sur les serveurs cibles si les requêtes distantes échouent :
winrm quickconfigTestez la connectivité avant d'exécuter des requêtes de fonctionnalités :
Test-WSMan ServerNameProblèmes de performance avec de grandes listes de serveurs :
Utilisez l'exécution basée sur les tâches pour de meilleures performances :
$job = Invoke-Command -ComputerName $servers -AsJob -ScriptBlock { Get-WindowsFeature | ? Installed }
Receive-Job $job -WaitVérification : Utilisez Get-Job pour surveiller l'état des tâches en arrière-plan et Remove-Job pour nettoyer les tâches terminées.
| Problème | Cause | Solution |
|---|---|---|
| Cmdlet non reconnu | Module ServerManager non chargé | Import-Module ServerManager |
| Accès à distance refusé | WinRM non configuré | Enable-PSRemoting sur la cible |
| Résultats incomplets | Permissions insuffisantes | Exécuter en tant qu'administrateur |
| Performance lente | Requêtes séquentielles | Utiliser Invoke-Command avec -AsJob |
Cette approche complète pour lister les rôles et fonctionnalités de Windows Server à l'aide de PowerShell vous fournit les outils nécessaires pour une gestion efficace des serveurs, des rapports de conformité et une documentation de l'infrastructure. Les techniques couvertes fonctionnent sur Windows Server 2016 à 2025, garantissant la compatibilité avec les environnements actuels et hérités.



