Gestion des rôles et fonctionnalités Windows Server avec PowerShell

Dans Windows Server 2012R2/2016/2019/2022, vous pouvez utiliser la console graphique du Gestionnaire de serveur pour installer et supprimer des rôles et des fonctionnalités.

Vous pouvez aussi le faire à partir de la console PowerShell.

un bon outils gratuit pour gérer les script PowerShell : Visual Studio Code

applet de commande pour afficher la liste des des rôles et fonctionnalités disponibles :

Get-WindowsFeature
Display Name = le nom d’affichage du rôle ou de la fonctionnalité
Name = le nom à utiliser en powershell
Install State = si c’est installé ou dipsonible.


Pour réduire la taille de dossier WinSxS, vous pouvez désinstaller un rôle ou une fonctionnalité.
Attention, dans ce cas, il faudra impérativement avoir un accès internet ou une iso d’installation pour réinstaller le rôle ou fonctionnalité désinstallé.

Pour désinstaller un rôle :

Uninstall-WindowsFeature –Name DHCP -Remove

Pour installer un rôle (accès internet requis) :

Install-WindowsFeature DHCP

Pour installer un rôle depuis le dossier sources WinSxs :

Install-WindowsFeature DHCP -Source E:\sources\sxs

Pour lister les rôle et fonctionnalités installés :

Get-WindowsFeature | Where-Object {$_. installstate -eq "installed"} | ft Name,Installstate

Sans connaitre le nom exact d’une fonctionnalité, il est possible de faire une recherche selon certain caractère, ici, recherche de la fonctionnalité DotNet FrameWork :

Get-WindowsFeature -Name NET-* | Where installed

Pour obtenir la liste des fonctionnalités d’un serveur distant, utiliser l’option : -ComputerName :

Get-WindowsFeature -ComputerName srvsql01 | Where installed | ft Name,Installstate

Il est possible de chercher un fonctionnalité spécifique sur des serveurs du domaine d’ans une Unité d’organisation avec l’applet Get-ADComputer du Module PowerShell ActiveDirectory :

Ici, on cherche les serveurs différents de Windows 2008 R2 et qui sont actifs, et présent dans l’unité d’organisation Serveurs :

import-module activedirectory
$Servers=get-adcomputer -properties * -Filter {Operatingsystem -notlike "*2008 R2*" -and enabled -eq "true" -and Operatingsystem -like "*Windows Server*"} -SearchBase 'OU=Serveurs,DC=test,DC=lan' | Select-Object Name
Foreach ($server in $Servers)
{
Get-WindowsFeature -name FileAndStorage-Services -ComputerName $server.Name | Where installed | ft $server.name, Name, Installstate
}

Installer des rôles fonctionnalités Windows Serveur

Utiliser l’applet de commande Install-WindowsFeature :

Ici, installation DNS plus Module PowerShell DNSServer :

Install-WindowsFeature DNS -IncludeManagementTools

Pour Afficher la liste des dépendances avant l’installation :

Install-WindowsFeature -Name UpdateServices -WhatIf

Option -Restart pour redémarrer le serveur après l’installation :

Get-WindowsFeature -Name SMTP-Server | Install-WindowsFeature

Installer les rôles d’un serveur sur X serveurs :
Créer un fichier CSV contenant les rôle et fonctionnalités d’un serveur modèle :

Get-WindowsFeature | where{$_.Installed -eq $True} | select name | Export-Csv C:\PS\InstalledRoles.csv -NoTypeInformation –Verbose

Utiliser le fichiers CSV pour installer les rôles et fonctionnalités :

Import-Csv C:\PS\Roles.csv | foreach{ Install-WindowsFeature $_.name }

Installer un rôle sur plusieurs serveurs :

$servers = ('ny-rds1', 'ny-rds2',’ny-rds3’,’ny-rds4’)
foreach ($server in $servers) {Install-WindowsFeature RDS-RD-Server -ComputerName $server}

Supprimer un rôle d’un serveur :

Remove-WindowsFeature Print-Server -Restart

Lister tous les contrôleurs de domaine :

Get-ADDomainController -Filter * | Select Name

Revenez voir de temps en temps pour consulter les commandes qui sont ajoutées ici.