Si vous devez activer RDP sur plusieurs serveurs distants, vous pouvez utiliser PowerShell remoting pour exécuter les commandes à distance. Cela est particulièrement utile pour gérer les installations de Server Core.
Tout d'abord, assurez-vous que PowerShell remoting est activé sur le serveur cible :
# Activer PowerShell remoting sur le serveur cible (exécuter localement sur la cible)
Enable-PSRemoting -Force
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force # Pour les environnements non-domaine
Ensuite, exécutez l'activation de RDP à distance :
# Définir le serveur cible et les informations d'identification
$RemoteComputer = "NOM-DU-SERVEUR-OU-IP"
$Credential = Get-Credential -Message "Entrez les informations d'identification pour $RemoteComputer"
# Exécuter l'activation de RDP sur le serveur distant
Invoke-Command -ComputerName $RemoteComputer -Credential $Credential -ScriptBlock {
# Activer RDP
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name 'fDenyTSConnections' -Value 0
# Activer les règles de pare-feu
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
# Activer NLA
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name 'UserAuthentication' -Value 1
# Redémarrer les services Terminal
Restart-Service -Name "TermService" -Force
# Retourner le statut
$rdpStatus = (Get-ItemProperty "HKLM:\System\CurrentControlSet\Control\Terminal Server").fDenyTSConnections -eq 0
$serviceStatus = (Get-Service -Name "TermService").Status
return @{
ComputerName = $env:COMPUTERNAME
RDPEnabled = $rdpStatus
ServiceStatus = $serviceStatus
Timestamp = Get-Date
}
}
# Vérifier la configuration à distance
Write-Host "Configuration RDP à distance terminée" -ForegroundColor Green
Pour plusieurs serveurs, vous pouvez utiliser une boucle :
# Activer RDP sur plusieurs serveurs
$servers = @("Server1", "Server2", "Server3")
$credential = Get-Credential
foreach ($server in $servers) {
try {
Write-Host "Configuration de RDP sur $server..." -ForegroundColor Yellow
$result = Invoke-Command -ComputerName $server -Credential $credential -ScriptBlock {
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name 'fDenyTSConnections' -Value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
Restart-Service -Name "TermService" -Force
return "Succès"
}
Write-Host "$server: $result" -ForegroundColor Green
}
catch {
Write-Host "$server: Échec - $($_.Exception.Message)" -ForegroundColor Red
}
}
Vérification : Chaque commande à distance doit retourner un statut de succès. Testez la connectivité RDP à chaque serveur après la configuration.
Astuce pro : Pour les environnements de domaine, vous n'avez pas besoin de modifier TrustedHosts. Utilisez les informations d'identification de domaine et les commandes fonctionneront parfaitement sur les serveurs joints au domaine.