Comment utiliser Enter-PSSession pour la gestion à distance de PowerShell
La cmdlet Enter-PSSession est un outil qui simplifie grandement la gestion à distance de plusieurs machines Windows. Pour résoudre un problème, déployer des configurations ou simplement vérifier un serveur distant, c’est généralement la solution de prédilection. Sur certaines configurations, son fonctionnement peut être un peu aléatoire : elle peut ne pas démarrer immédiatement en raison de problèmes de réseau ou d’autorisations. Mais une fois opérationnelle, elle est très efficace. Gardez simplement à l’esprit que, selon votre environnement, vous devrez peut-être ajuster quelques paramètres ou exécuter certaines commandes pour que tout fonctionne correctement. Et oui, Windows a parfois tendance à compliquer les choses inutilement.
Comment résoudre les problèmes courants liés à Enter-PSSession
Activation de l’accès à distance PowerShell sous Windows 10/11 pour l’accès à distance
Par défaut, PSRemoting est désactivé sur les installations Windows de bureau (Win10/11), probablement parce que Microsoft estime que la plupart des utilisateurs s’exposeraient à des failles de sécurité. Pour l’activer, ouvrez PowerShell en tant qu’administrateur et exécutez :
Enable-PSRemoting -Force
Cette commande effectue plusieurs opérations : elle active WinRM, configure son démarrage automatique, ajuste le pare-feu et redémarre le service. Parfois, si vous êtes sur un réseau public, vous devrez peut-être ajouter l’option `-SkipNetworkProfileCheck` comme ceci :
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Ceci est important car sur un réseau Wi-Fi public ou certains profils réseau plus stricts, WinRM peut rester désactivé.
Vérification si WinRM est effectivement en cours d’exécution et à l’écoute
Si la connexion à distance échoue toujours, vérifiez que le service WinRM fonctionne correctement. Exécutez :
Get-Service WinRM | Select MachineName, Name, Status, StartType
Tout est en ordre ? L’état devrait indiquer « En cours d’exécution » et le type de démarrage « Automatique ».Sinon, démarrez-le manuellement avec :
Start-Service WinRM
Il arrive que le pare-feu bloque le trafic WinRM entrant. Vérifiez que le port TCP 5985 (HTTP) ou 5986 (HTTPS si SSL est activé) est ouvert dans les règles de votre pare-feu. Vous pouvez l’ajouter ou le vérifier via les paramètres du Pare-feu Windows ou par PowerShell, comme suit :
New-NetFirewallRule -Name "WinRM HTTP" -DisplayName "Allow WinRM over HTTP" -Protocol TCP -LocalPort 5985 -Action Allow
Autoriser votre utilisateur dans le groupe approprié
Pour des raisons de sécurité, seuls certains groupes d’utilisateurs sont autorisés à se connecter à distance. En général, votre compte doit appartenir au groupe Administrateurs ou Utilisateurs de gestion à distance. Dans certaines configurations, vous devrez peut-être vous ajouter explicitement. Exécutez la commande suivante dans PowerShell :
Add-LocalGroupMember -Group "Remote Management Users" -Member "YourUsername"
Remplacez YourUsernamepar votre nom d’utilisateur réel. Cela suffit généralement, sauf si les stratégies Active Directory le bloquent.
Ajouter un hôte distant en tant qu’hôte de confiance
Si vous tentez de vous connecter à l’aide d’une adresse IP ou d’un enregistrement CNAME (et non d’un nom de domaine complet), vous risquez de rencontrer des restrictions TrustedHosts. Pour résoudre ce problème, exécutez :
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.100"
Ou, pour plusieurs hôtes ou caractères génériques :
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*.woshub.com"
Ensuite, redémarrez le service WinRM avec :
Restart-Service WinRM
N’oubliez pas que l’ajout d’hôtes à TrustedHosts peut engendrer des risques de sécurité, procédez donc avec prudence.
Test de connectivité locale ou distante
Avant de tenter une connexion à distance, vérifiez la configuration locale avec :
Test-WSMan -ComputerName localhost
Si la commande renvoie les informations de version sans erreur, votre configuration WinRM est correcte. Dans le cas contraire, vous devez d’abord résoudre le problème côté serveur. N’oubliez pas que si la connexion à distance n’est pas activée, vous recevrez un message d’erreur indiquant l’impossibilité de se connecter, ainsi que des erreurs telles que :
Test-WSMan :
Making the Actual Connection
Once everything’s ready, connecting is straightforward:
Enter-PSSession -ComputerName your_remote_host
If you need credentials, use the -Credentials switch:
Enter-PSSession -ComputerName your_remote_host -Credentials (Get-Credential)
This will pop up a login box. On one setup it worked right away, on another I had to make sure the user was in the right group and WinRM was enabled everywhere. Weird thing is sometimes it’s flakey, especially if you’re mixing domain and workgroup machines or trying over IP without proper trust. Just keep an eye on those details.
Over SSH — Modern Twist for PowerShell Remoting
Up to PowerShell 7+, you can also connect over SSH if you have the built-in OpenSSH server enabled on the remote Windows machine (fingers crossed it’s set up).Use:
Enter-PSSession -HostName user@hostname
Or with an SSH key:
Enter-PSSession -HostName user@hostname -KeyFilePath C:\PS\max_rsa_key
This is kind of a newer, more secure way, especially if WinRM isn’t an option.
Remember, if connecting over IP, you'll likely need to add the host to the TrustedHosts list, because of how default WinRM settings work. Otherwise, authentication gets weird.
In general, using Enter-PSSession and related commands like New-PSSession are perfect for interactive sessions — but for scripting or running on multiple machines at once, you’d probably jump into Invoke-Command.