Guide de gestion à distance Windows (WinRM)
Gestion à distance Windows (WinRM)est l'implémentation Microsoft deGestion des services Web (WS-Management)protocole qui fournit un moyen commun aux systèmes (matériel et systèmes d'exploitation) de différents fournisseurs d'interagir pour accéder et échanger des informations de gestion au sein d'une infrastructure informatique.
WinRM est un protocole important et utile, en particulier pour les administrateurs réseau gérant une grande infrastructure réseau Windows.
Microsoft a commencé à mettre en œuvre leGestion WSstandard lors de la sortie de WinRM 1.1, disponible pour Windows XP, Windows Server 2003, Windows Vista et Windows Server 2008. Cela a été suivi par WinRM 2.0 trouvé dans Windows 7 et Windows Server 2008 R2, qui permet d'invoquer des scripts et des applets de commande PowerShell 2.0. sur une machine distante ou un grand ensemble de machines distantes. La dernière version de Windows Remote Management : WinRM 3.0 a été publiée en 2012 et est préinstallée dans Windows 8 et Windows Server 2012.
Pourquoi le protocole WinRM est-il important ?
Pourquoi le protocole WinRM est-il important et pourquoi en avons-nous besoin ? Avec le protocole WinRM, la connexion entre ordinateurs ou serveurs peut être facilement établie, afin que des opérations à distance puissent être effectuées. Vous pouvez obtenir des données ou gérer des ressources sur des ordinateurs distants ainsi que sur l'ordinateur local. La connexion à un ordinateur distant dans un script de gestion à distance Windows est très similaire à l'établissement d'une connexion locale. Le protocole WinRM est destiné à améliorer la gestion du matériel dans un environnement réseau avec divers appareils exécutant divers systèmes d'exploitation.
En tant qu'outil de ligne de commande, WinRM est intégré aux systèmes d'exploitation Windows et basé sur .NET et PowerShell, ce qui permet d'utiliser des scripts et des applications à distance. Commandes PowerShell être invoqué sur des machines Windows ou sur un grand nombre de machines distantes sans RDP ou connectez-vous à la machine distante. Cette méthode permet aux administrateurs Windows de gérer plus facilement plusieurs machines à l'aide de scripts et d'applets de commande, et d'effectuer des tâches telles que :
- Surveillez, gérez et configurez les serveurs, les systèmes d'exploitation et les machines client à partir d'un emplacement distant.
- Communiquez et interagissez à distance avec les hôtes via des canaux/ports facilement disponibles au sein de votre réseau, y compris les postes de travail, les serveurs et tout système d'exploitation qui le prend en charge.
- Exécutez des commandes à distance sur des systèmes sur lesquels vous n'êtes pas local mais qui sont accessibles par le réseau
LeShell distant Windows (WinRS)L'outil de ligne de commande s'appuie sur WinRM pour exécuter des commandes à distance. Il exploite WinRM pour vous permettre de lancer des processus sur des machines distantes. WinRM est le composant serveur de cette application de gestion à distance et WinRS est le composant client de WinRM, qui s'exécute sur l'ordinateur distant tentant de gérer à distance le serveur WinRM. Cependant, WinRM doit être installé et activé sur les deux ordinateurs pour que WinRS fonctionne et récupère les informations du système distant.
WinRM architecture et composants
L'architecture WinRM se compose de composants sur les ordinateurs client et serveur. Le diagramme de la figure 1.0 ci-dessous montre les composants sur les ordinateurs client demandeur et serveur répondant, ainsi que la manière dont ils interagissent les uns avec les autres, y compris le protocole utilisé pour communiquer entre eux.

Le tableau 1.0 ci-dessous présente une répartition des différents composants WinRM et leur emplacement.
Application WinRM | Outil de ligne de commande WinRM qui utilise l'API de script WinRM pour effectuer des appels pour demander des données ou pour exécuter des méthodes | Côté client |
WSMAuto.dll | La couche d'automatisation qui fournit la prise en charge des scripts | Côté client et côté serveur |
WsmCL.dl | Couche API au sein du système d'exploitation | Côté client et côté serveur |
API HTTP | Fournit la prise en charge du transport HTTP et HTTPS | Côté client et côté serveur |
WsmSvc.dll | Service d'écoute WinRM | Du côté serveur |
WsmProv.dll | Sous-système fournisseur | Du côté serveur |
WsmRes.dll | Fichier de ressources | Du côté serveur |
WsmWmiPl.dll | Plug-in WMI qui vous permet d'obtenir des données WMI via WinRM | Du côté serveur |
Pilote IPMI et fournisseur WMI IPMI | Fournissez toutes les données matérielles demandées à l'aide des classes IPMI (Intelligent Platform Management Interface). | Du côté serveur |
Tableau 1.0 | Composants WinRM et description
Configuration et commandes WinRM
Pour que l'outil de ligne de commande et les scripts WinRM s'exécutent et effectuent efficacement des opérations sur les données, Windows Remote Management (WinRM) doit être installé et configuré. Cependant, la bonne nouvelle est que WinRM est automatiquement installé avec toutes les versions actuellement prises en charge du système d'exploitation Windows, y compris les composants du fournisseur IPMI (Intelligent Platform Management Interface) WMI (Windows Management Instrumentation).
Par défaut, WinRM est activé sur Système d'exploitation Windows Server depuisWindows Serveur 2012, mais pas sur le système d'exploitation Windows 10. Cela signifie que vous devez l'activer sur les machines Windows 10. Pour activer WinRM sur une machine Windows 10, ouvrez PowerShell et exécutez l'applet de commande suivante :
Activer-PSRemoting -force
Si vous disposez d'un seul ordinateur Windows 10 qui ne fait pas partie d'un Active Directory réseau de domaine, vous devrez peut-être ajouter la machine à partir de laquelle vous allez vous connecter à l'hôte de confiance de la machine Windows 10. La raison pour laquelle nous devons ajouter des hôtes de confiance est de pouvoir nous connecter à une machine Windows à l'aide de WinRM.
Cependant, dans les situations où vous disposez de plus de 100 machines Windows 10 dans un réseau de domaine Active Directory, vous devrez peut-être utiliser une stratégie de groupe (GPO) pour le faire fonctionner avec un minimum d'effort. Pour utiliser un GPO, créez-en un nouveau ou modifiez-en un existant, modifiez les paramètres suivants et définissez WinRM sur « Activé » :
- Configuration ordinateur > Stratégies > Modèles d'administration > Composants Windows > Gestion à distance Windows (WinRM) > Service WinRM > Autoriser la gestion de serveur distant via WinRM
N'oubliez pas d'appliquer le GPO aux unités organisationnelles (OU) qui abritent toutes vos machines Windows 10. Quelques minutes après l'application du GPO à l'UO, tous vos hôtes recevront la mise à jour de la stratégie. Dans ce cas, il n’est pas nécessaire de modifier la liste des hôtes de confiance.
Le tableau ci-dessous est une collection de certaines commandes WinRM que vous pouvez utiliser pour exécuter des opérations à distance. Veuillez noter que ces commandes fonctionnent mieux lorsque vous êtes sur un réseau de domaine Active Directory. Pour les machines du groupe de travail, le service WinRM peut nécessiter une configuration supplémentaire telle que la modification de la liste des hôtes de confiance.
Localiser les auditeurs et les adresses | winrm et winrm/config/listener | |
Vérifier l'état des paramètres de configuration | winrm récupère winrm/config | |
Configurez rapidement le service WS-Man | winrm QuickConfig | Exécuter à partir d'une invite de commande élevée |
Supprimez rapidement l'écouteur WS-Man | winrm invoque Restaurer winrm/Config @{} | Exécuter à partir d'une invite de commande élevée |
Afficher les informations matérielles de base de votre machine | winrm énumérer wmicimv2/Win32_ComputerSystem | Exécuter à partir d'une invite de commande élevée |
Afficher les propriétés de votre système d'exploitation | winrm récupère wmicimv2/Win32_OperatingSystem | Exécuter à partir d'une invite de commande élevée |
Afficher les informations de votre système d'exploitation au format XML | winrm récupère wmicimv2/Win32_OperatingSystem -format:joli | Exécuter à partir d'une invite de commande élevée |
Tester l'accès WS-Man à une machine distante | identifiant winrm -à distance : | Exécuter à partir d'une invite de commande élevée |
Récupérez la configuration WS-Man d'une machine distante | winrm obtient winrm/Config -r : | Exécuter à partir d'une invite de commande élevée |
Récupérez la charge CPU d'une machine distante | winrm g wmicimv2/Win32_Processor?DeviceID=CPU0 -fragment:LoadPercentage -r : | Exécuter à partir d'une invite de commande élevée |
Récupérez la mémoire libre d’une machine distante | winrm g wmicimv2/Win32_OperatingSystem -fragment:FreePhysicalMemory -r: | Exécuter à partir d'une invite de commande élevée |
Arrêter un service sur une machine distante | winrm invoque stopservice wmicimv2/Win32_Service?name=w32time -r : | Exécuter à partir d'une invite de commande élevée |
Démarrer un service sur une machine distante | winrm invoque startservice wmicimv2/Win32_Service?name=w32time -r : | Exécuter à partir d'une invite de commande élevée |
Redémarrer une machine distante | winrm invoque le redémarrage wmicimv2/Win32_OperatingSystem -r : | Exécuter à partir d'une invite de commande élevée |
Exécutez une commande sur une machine distante (cela utilise winrS, pas winrM) | winrs -r : ipconfig /tout | Exécuter à partir d'une invite de commande élevée |
Utilisez PowerShell pour récupérer la sortie XML WS-Man Win32_OperatingSystem | [xml]$osInfo = winrm obtenir wmicimv2/Win32_OperatingSystem /format:pretty | Exécuter à partir de PowerShell |
Afficher la propriété de la version du système d'exploitation | $osInfo.Win32_OperatingSystem.Version | Exécuter à partir de PowerShell |
Afficher l'heure du dernier démarrage | $osInfo.Win32_OperatingSystem.LastBootupTime.DateTime | Exécuter à partir de PowerShell |
Mettre la métrique de mémoire libre dans une variable XML | [xml]$freemem = cmd /c « winrm get wmicimv2/Win32_OperatingSystem -fragment:FreePhysicalMemory -f:pretty -r: » | Exécuter à partir de PowerShell |
Afficher la valeur de la mémoire libre | $freemem.XMLFragment.FreePhysicalMemory | Exécuter à partir de PowerShell |
Tableau 2.0 | Commandes WinRM courantes et description
Sécurité WinRM
Par défaut, WinRM utilise Kerberos pour l'authentification. Cela signifie que Windows n'envoie jamais les informations d'identification réelles au système pour demander une validation au lieu de s'appuyer sur des fonctionnalités telles que le hachage et les tickets pour se connecter.
WinRM écoute sur le port TCP 80 (HTTP) par défaut, cela ne signifie pas que le trafic n'est pas chiffré. Le trafic par défaut n'est accepté par WinRM que lorsqu'il est chiffré à l'aide duNégocierouKerberos SSP. WinRM inclut également un code d'assistance qui permet à l'écouteur WinRM de partager le port 80 avec le serveur Web Microsoft IIS ou toute autre application pouvant avoir besoin d'utiliser ce port. Bien que les écouteurs WinRM puissent être configurés pour chiffrer toutes les communications à l'aide de HTTPS, avec l'utilisation de Kerberos, même si HTTP non chiffré est utilisé, toutes les communications sont toujours chiffrées à l'aide d'une clé symétrique de 256 bits une fois la phase d'authentification terminée.
Vous pouvez configurer manuellement WinRM pour utiliser HTTPS. Le but de la configuration de WinRM pour HTTPS est de chiffrer les données envoyées sur le réseau. Cela permet une sécurité supplémentaire en garantissant l'identité du serveur via SSL/TLS certificats empêchant ainsi un attaquant de usurper son identité. Pour configurer WinRM pour utiliser HTTPS, un certificat d'authentification de serveur d'ordinateur local avec unCNAMEcorrespondant au nom d'hôte doit être installé. Pour installer des certificats pour l'ordinateur local, suivez les étapes ci-dessous :
- Sélectionnez Démarrer, puis sélectionnez Exécuter (ou, à l'aide de la combinaison de touches, appuyez sur la touche Windows + R)
- Tapez MMC puis appuyez sur Entrée
- Sélectionnez Fichier dans les options du menu, puis sélectionnez Ajouter ou supprimer des composants logiciels enfichables.
- Sélectionnez Certificats et sélectionnez Ajouter
- Parcourez l'assistant en sélectionnant le compte Ordinateur
- Installez ou affichez les certificats sous Certificats (ordinateur local) >> Personnel >> Certificats.
Une fois le certificat installé avec succès, utilisez la commande suivante pour configurer WRM pour qu'il écoute sur HTTPS :winrm quickconfig -transport:https
Applications notables de WinRM
- Le logiciel SolarWinds Server & Application Monitor (SAM) permet un accès à distance à PowerShell avec WinRM. Il utilise un serveur WinRM sur des serveurs surveillés pour son intégration PowerShell.
- Thycotic Secret Server : solution de gestion des accès privilégiés (PAM), s'appuie sur les composants WinRM pour exécuter des scripts PowerShell.
- Ansible : un outil de provisionnement et de déploiement de logiciels open source sans agent, exploite WinRM pour communiquer avec les serveurs Windows et exécuter des scripts et des commandes PowerShell. Ansible est sans agent en raison de sa capacité à se connecter à distance via WinRM, permettant ainsi à l'exécution à distance de PowerShell d'effectuer ses tâches.
- CloudBolt : une plate-forme de gestion de cloud hybride, exploite WinRM dans le cadre de Blueprints, d'actions de serveur et de plug-ins CB pour exécuter des scripts à distance sur des serveurs Windows à l'aide de Python.pywinrmmodule.
FAQ sur la gestion à distance de Windows
WinRM est-il identique à RDP ?
WinRM et RDP sont deux systèmes différents, bien que tous deux aient été développés par Microsoft. WinRM est conçu pour la gestion à distance des ordinateurs Windows. RDP signifie Remote Desktop Protocol et fournit une vue du bureau d'un ordinateur Windows distant. Il existe également des clients RDP disponibles pour Linux, Unix, macOS, Android et iOS.
Quelle est la différence entre WinRM et WMI ?
WinRM est le système de gestion à distance de Windows. WMI est le système Windows Management Instrumentation. WMI collecte des rapports d'état sur les services intégrés au système Windows. WinRM est un protocole distant. En vérité, WinRM extrait les données WMI des ordinateurs distants et utilise donc WMI comme agent local.
WinRM est-il activé par défaut ?
WinRM n'est pas activé par défaut dans les versions de Windows Server jusqu'à 2012. À partir de Windows Server 2012 R2, WinRM est activé par défaut.