Comment contrôler votre PC depuis votre téléphone mobile à l'aide de PowerShell Remoting

Dernière mise à jour: 15/10/2025

  • La communication à distance utilise WinRM/WS-Man (HTTP/HTTPS) et permet des sessions 1 à 1, 1 à plusieurs et persistantes avec des contrôles de sécurité.
  • Enable-PSRemoting configure le service, les écouteurs et le pare-feu ; HTTPS nécessite un certificat valide et une correspondance CN/SAN.
  • Les résultats sont renvoyés désérialisés ; les méthodes sont invoquées dans le bloc de script distant et des points de terminaison personnalisés sont utilisés pour une délégation à granularité fine.
PowerShell à distance

Vous automatisez peut-être déjà de nombreuses tâches avec PowerShell localement, mais où le faites-vous réellement ? PowerShell Remoting fait la différence Il s'agit de l'exécution de commandes sur des machines distantes, qu'elles soient nombreuses ou nombreuses, de manière interactive ou parallèle. Cette technologie, disponible depuis Windows PowerShell 2.0 et améliorée depuis la version 3.0, repose sur WS-Management (WinRM) et convertit PowerShell dans un canal de gestion à distance robuste, évolutif et sécurisé.

Tout d’abord, il est important de comprendre deux idées clés : les applets de commande avec -Paramètre ComputerName (par exemple, Get-Process ou Get-Service) ne sont pas la voie à long terme recommandée par Microsoft, et PowerShell Remoting ne fonctionne pas comme un « hack ». En fait, applique l'authentification mutuelle, enregistre les journaux d'audit et respecte vos autorisations habituelles, sans stocker d'informations d'identification ni exécuter quoi que ce soit par magie avec des super privilèges.

Qu'est-ce que PowerShell Remoting et pourquoi l'utiliser ?

Avec Accès à distance PowerShell Vous pouvez exécuter presque n'importe quelle commande à distance Vous pouvez lancer des applications distantes dans une session locale, de l'interrogation des services au déploiement des configurations, et ce sur des centaines d'ordinateurs simultanément. Contrairement aux applets de commande qui acceptent -ComputerName (beaucoup utilisent DCOM/RPC), la communication à distance voyage via WS-Man (HTTP/HTTPS), qui est plus convivial pour le pare-feu, permet le parallélisme et décharge le travail sur l'hôte distant, et non sur le client.

Cela se traduit par trois avantages pratiques : de meilleures performances dans les exécutions massives, moins de friction dans les réseaux avec des règles restrictives et un modèle de sécurité compatible avec Kerberos/HTTPS. De plus, en ne dépendant pas de chaque applet de commande pour implémenter sa propre commande distante, la communication à distance Cela fonctionne pour n'importe quel script ou rôle qui est disponible à destination.

Par défaut, les serveurs Windows récents sont livrés avec la fonction Remoting activée ; dans Windows 10/11 vous l'activez avec une seule applet de commande. Et oui, vous pouvez utiliser des identifiants alternatifs, des sessions persistantes, des points de terminaison personnalisés, et bien plus encore.

Remarque : La communication à distance ne signifie pas l'ouverture complète. Par défaut, seuls les administrateurs Ils peuvent se connecter et les actions sont exécutées sous leur identité. Si vous avez besoin d'une délégation précise, des points de terminaison personnalisés vous permettent d'exposer uniquement les commandes essentielles.

Architecture de communication à distance PowerShell

Comment cela fonctionne à l'intérieur : WinRM, WS-Man et les ports

PowerShell Remoting fonctionne selon un modèle client-serveur. Le client envoie des requêtes WS-Management via HTTP (5985/TCP) ou HTTPS (5986/TCP). Sur la cible, le service Windows Remote Management (WinRM) écoute, résout le point de terminaison (configuration de session) et héberge la session PowerShell en arrière-plan (processus wsmprovhost.exe), renvoyer des résultats sérialisés au client en XML via SOAP.

La première fois que vous activez Remoting, les écouteurs sont configurés, l'exception de pare-feu appropriée est ouverte et les configurations de session sont créées. À partir de PowerShell 6, plusieurs éditions coexistent. Activer-PSRemoting Enregistre les points de terminaison avec des noms qui reflètent la version (par exemple, PowerShell.7 et PowerShell.7.xy).

Contenu exclusif - Cliquez ici  Alerte mondiale concernant une vulnérabilité critique dans Google Chrome : ce que vous devez savoir et comment vous protéger

Si vous autorisez uniquement HTTPS dans votre environnement, vous pouvez créer un auditeur sûr avec un certificat émis par une autorité de certification de confiance (recommandé). Une autre solution consiste à utiliser TrustedHosts de manière limitée et en tenant compte des risques, pour les groupes de travail ou les ordinateurs hors domaine.

Notez que Powershell Remoting peut coexister avec les applets de commande avec -ComputerName, mais Microsoft fait la promotion de WS-Man comme moyen standard et évolutif d’administration à distance.

Activation de PowerShell Remoting et paramètres utiles

Sous Windows, ouvrez simplement PowerShell en tant qu'administrateur et exécutez Activer-PSRemotingLe système démarre WinRM, configure le démarrage automatique, active l'écouteur et crée les règles de pare-feu appropriées. Sur les clients disposant d'un profil réseau public, vous pouvez autoriser cette opération avec -SkipNetworkProfileCheck (et ensuite renforcer avec des règles spécifiques) :

Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force

 

La syntaxe permet également, -Confirmer y -Et qu'est-ce qui se passerait si pour le contrôle des modifications. N'oubliez pas : Il n'est disponible que sur Windows, et vous devez exécuter la console avec privilèges élevés. Les règles créées diffèrent entre les éditions Serveur et Client, notamment sur les réseaux publics, où elles sont par défaut limitées au sous-réseau local, sauf si vous étendez leur portée (par exemple, avec Set-NetFirewallRule).

Pour lister les configurations de session déjà enregistrées et confirmer que tout est prêt, utilisez Obtenir-PSSessionConfigurationSi les points de terminaison PowerShell.x et Workflow apparaissent, le framework Remoting est opérationnel.

Session à distance avec PowerShell

Modes d'utilisation : 1 à 1, 1 à plusieurs et sessions persistantes

Lorsque vous avez besoin d'une console interactive sur un seul ordinateur, faites appel à Enter-PSSessionL'invite apparaîtra et toutes vos actions seront envoyées à l'hôte distant. Vous pouvez réutiliser vos identifiants avec Get-Credential pour éviter de les ressaisir constamment :

$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession

Si vous cherchez à envoyer des commandes à plusieurs ordinateurs à la fois, l'outil est Invoke-Command avec un bloc de script. Par défaut, il lance jusqu'à 32 connexions simultanées (réglable avec -ThrottleLimit). Les résultats sont renvoyés sous la forme objets désérialisés (sans méthodes « live ») :

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred

Besoin d'invoquer une méthode comme .Stop() ou .Start() ? Faites-le. à l'intérieur du bloc de script Dans le contexte distant, pas dans l'objet désérialisé local, et c'est tout. S'il existe une applet de commande équivalente (Stop-Service/Start-Service), il est généralement préférable de l'utiliser pour plus de clarté.

Pour éviter les coûts de démarrage et de fin de session à chaque appel, créez un Session PS persistante et réutilisez-le pour plusieurs appels. Utilisez New-PSSession pour créer la connexion et Invoke-Command-Session pour réutiliser le tunnel. N'oubliez pas de le fermer avec Remove-PSSession une fois terminé.

Sérialisation, limites et bonnes pratiques

Un détail important : lors des déplacements, les objets « s'aplatissent » et arrivent comme instantanés désérialisés, avec des propriétés mais sans méthodes. Ceci est intentionnel et permet d'économiser de la bande passante, mais cela signifie que vous ne pouvez pas utiliser de membres exécutant une logique (comme .Kill()) sur la copie locale. La solution est évidente : invoquer ces méthodes. à distance et si vous n'avez besoin que de certains champs, filtrez avec Select-Object pour envoyer moins de données.

Contenu exclusif - Cliquez ici  Comment éviter d'endommager vos fichiers ?

Dans les scripts, évitez la commande Enter-PSSession (destinée à une utilisation interactive) et privilégiez la commande Invoke-Command avec les blocs de script. Si vous prévoyez plusieurs appels ou devez conserver l'état (variables, modules importés), utiliser des sessions persistantes et, le cas échéant, déconnectez-les/reconnectez-les avec Disconnect-PSSession/Connect-PSSession dans PowerShell 3.0+.

Authentification, HTTPS et scénarios hors domaine

Dans un domaine, l’authentification native est Kerberos Et tout fonctionne. Lorsque l'appareil ne peut pas vérifier le nom du serveur, ou que vous vous connectez à une adresse IP ou un alias CNAME, vous avez besoin de l'une de ces deux options : 1) Écouteur HTTPS avec certificat émis par une autorité de certification à laquelle vous faites confiance, ou 2) ajoutez la destination (nom ou IP) à TrustedHosts et utiliser les informations d'identificationLa deuxième option désactive l’authentification mutuelle pour cet hôte, réduisant ainsi la portée au minimum nécessaire.

La configuration d'un écouteur HTTPS nécessite un certificat (idéalement issu de votre PKI ou d'une autorité de certification publique), installé dans le magasin d'équipe et lié à WinRM. Le port 5986/TCP est ensuite ouvert dans le pare-feu et utilisé par le client. -Utiliser SSL dans les applets de commande distantes. Pour l'authentification par certificat client, vous pouvez mapper un certificat à un compte local et vous connecter avec -Certificat Empreinte digitale (Enter-PSSession n'accepte pas cela directement ; créez d'abord la session avec New-PSSession.)

Le deuxième saut et la délégation des informations d'identification

Le fameux « double hop » apparaît lorsque, après s’être connecté à un serveur, vous avez besoin que ce serveur accède à un troisième ressource En votre nom (par exemple, un partage SMB). Il existe deux approches pour ce faire : CredSSP et la délégation Kerberos restreinte basée sur les ressources.

Avec CréditSSP Vous autorisez le client et l'intermédiaire à déléguer explicitement les identifiants, et vous définissez une stratégie (GPO) autorisant la délégation à des ordinateurs spécifiques. La configuration est rapide, mais moins sécurisée, car les identifiants circulent en clair dans le tunnel chiffré. Limitez toujours les sources et les destinations.

L'alternative préférée dans le domaine est la délégation Kerberos restreinte (délégation contrainte basée sur les ressources) dans AD moderne. Cela permet au point de terminaison de s'appuyer sur la délégation du point intermédiaire pour des services spécifiques, évitant ainsi d'exposer votre identité lors de la connexion initiale. Nécessite des contrôleurs de domaine récents et un RSAT à jour.

Points de terminaison personnalisés (configurations de session)

L’un des joyaux du Remoting est de pouvoir enregistrer des points de connexion avec capacités et limites sur mesure. Vous générez d'abord un fichier avec New-PSSessionConfigurationFile (modules à précharger, fonctions visibles, alias, ExecutionPolicy, LanguageMode, etc.), puis vous l'enregistrez avec Register-PSSessionConfiguration, où vous pouvez définir Exécuter en tant qu'identifiant et les autorisations (interface SDDL ou GUI avec -ShowSecurityDescriptorUI).

Pour une délégation sécurisée, exposez uniquement ce qui est nécessaire avec -VisibleCmdlets/-VisibleFunctions et désactivez les scripts libres si nécessaire avec Mode de langueLangue restreinte ou NoLanguage. Si vous quittez FullLanguage, quelqu'un pourrait utiliser un bloc de script pour invoquer des commandes non exposées, ce qui, combiné à RunAs, ce serait un trouConcevez ces points finaux avec un peigne fin et documentez leur portée.

Domaines, GPO et Groupware

Dans AD, vous pouvez déployer Powershell Remoting à grande échelle avec GPO : autoriser la configuration automatique des écouteurs WinRM, définir le service sur Automatiqueet créez l'exception de pare-feu. N'oubliez pas que les GPO modifient les paramètres, mais n'activent pas toujours le service instantanément ; il est parfois nécessaire de redémarrer ou de forcer une mise à jour GPO.

Contenu exclusif - Cliquez ici  Comment utiliser Norton Mobile Security ?

Dans les groupes de travail (hors domaine), configurez la communication à distance avec Activer-PSRemoting, définissez TrustedHosts sur le client (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) et utilisez les identifiants locaux. Pour HTTPS, vous pouvez monter des certificats auto-signés, bien qu'il soit recommandé d'utiliser une autorité de certification de confiance. valider le nom que vous utiliserez dans -ComputerName dans le certificat (correspondance CN/SAN).

Applets de commande clés et syntaxe

Une poignée de commandos couvrent la 90% des scénarios quotidiens. Pour activer/désactiver :

Enable-PSRemoting    
Disable-PSRemoting

Séance interactive 1 à 1 et sortie :

Enter-PSSession -ComputerName SEC504STUDENT 
Exit-PSSession

1 à plusieurs, avec parallélisme et références :

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred

Sessions persistantes et réutiliser :

$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s

Tests et WinRM Utile:

Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https

Notes pratiques sur le pare-feu, le réseau et les ports

Ouvrez 5985/TCP pour HTTP et 5986/TCP pour HTTPS sur l'ordinateur cible et sur tout pare-feu intermédiaireSur les clients Windows, Enable-PSRemoting crée des règles pour les profils de domaine et privés ; pour les profils publics, il est limité au sous-réseau local, sauf si vous modifiez l'étendue avec Set-NetFirewallRule -RemoteAddress Any (une valeur que vous pouvez évaluer en fonction de votre risque).

Si vous utilisez des intégrations SOAR/SIEM qui exécutent des commandes à distance (par exemple à partir de XSOAR), assurez-vous que le serveur dispose Résolution DNS aux hôtes, connectivité aux ports 5985/5986 et informations d'identification avec autorisations locales suffisantes. Dans certains cas, l'authentification NTLM/Basic peut nécessiter un ajustement (par exemple, utilisation d'un utilisateur local en Basic avec SSL).

Paramètres d'activation de PSRemoting (résumé opérationnel)

-Confirmer demande une confirmation avant l'exécution ; -Forcer ignore les avertissements et effectuez les modifications nécessaires ; -SkipNetworkProfileCheck active la communication à distance sur les réseaux clients publics (limitée par défaut au sous-réseau local) ; -WhatIf vous montre ce qui se passerait sans appliquer les modifications. De plus, comme toute applet de commande standard, elle prend en charge paramètres communs (-Verbose, -ErrorAction, etc.).

N'oubliez pas que « Activer » ne crée pas d'écouteurs ou de certificats HTTPS pour vous ; si vous avez besoin d'un chiffrement de bout en bout dès le départ et d'une authentification basée sur agréé, configurez l'écouteur HTTPS et validez CN/SAN par rapport au nom que vous utiliserez dans -ComputerName.

Commandes WinRM et PowerShell Remoting utiles

Quelques articles de chevet essentiels Pour le quotidien :

winrm get winrm/config
winrm enumerate winrm/config/listener
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
Test-WSMan -ComputerName host -Authentication Default -Credential (Get-Credential)
New-PSSession -ComputerName host 
Enter-PSSession -ComputerName host 
Enable-PSRemoting -SkipNetworkProfileCheck -Force

Pour la gestion de Windows à grande échelle, la communication à distance vous permet de passer d'une approche « ordinateur à ordinateur » à une approche déclarative et sécurisée. En combinant sessions persistantes, authentification forte (Kerberos/HTTPS), points de terminaison restreints et traces claires pour les diagnostics, vous gagnez en vitesse et en contrôle Sans sacrifier la sécurité ni l'audit. En standardisant l'activation des GPO et en maîtrisant les cas particuliers (TrustedHosts, double hop, certificats), vous disposerez d'une plateforme distante robuste pour les opérations quotidiennes et la gestion des incidents.

logiciels malveillants invisibles
Article connexe:
Comment protéger votre PC contre les logiciels malveillants invisibles comme XWorm et NotDoor