web-dev-qa-db-fra.com

Comment puis-je me connecter à un serveur Windows à l'aide d'une interface de ligne de commande? (CLI)

Surtout avec la possibilité d'installer Server Core dans Server 2008 et supérieur, la connexion aux serveurs Windows via un CLI est une capacité de plus en plus utile, sinon une qui est très répandue parmi les administrateurs Windows.

Pratiquement tous les outils de gestion Windows GUI ont une option pour se connecter à un ordinateur distant, mais aucune option de ce type n’est présente dans Windows CLI (cmd.exe), ce qui donne l'impression initiale que cela pourrait ne pas être possible.

Est-il possible de gérer ou d'administrer à distance un serveur Windows à l'aide d'une CLI? Et si oui, quelles sont les options pour y parvenir?

96
HopelessN00b

Il existe plusieurs options assez simples pour gérer à distance un serveur Windows distant à l'aide d'une ligne de commande, y compris quelques options natives.

Options natives:

  1. WinRS/WinRM

    • L'outil Windows Remote Shell/Management est le moyen le plus simple de gérer à distance un serveur Windows distant dans un utilitaire de ligne de commande, et comme avec la plupart des utilitaires de ligne de commande Windows, ss64 a une bonne page sur ses options et sa syntaxe .
    • Bien que cela ne soit pas explicitement indiqué dans la documentation de Microsoft, cela peut être utilisé pour lancer une instance distante de cmd.exe, qui crée une ligne de commande interactive sur le système distant, plutôt que comme option de ligne de commande pour exécuter une seule commande sur un serveur distant.
      • Comme avec: winrs -r:myserver.mydomain.tld cmd
    • Il s'agit également de l'option prise en charge en mode natif qui sera probablement la plus connue des administrateurs d'autres systèmes (* nix, BSD, etc.) qui sont principalement basés sur CLI.

  2. PowerShell

  3. Bureau à distance

    • Probablement pas exactement la première chose qui vient à l'esprit en tant qu'option Window CLI, mais bien sûr, en utilisant mstsc.exe pour se connecter à un serveur via Remote Desktop Protocl (RDP) permet d'utiliser une ligne de commande sur le serveur distant.
    • La connexion à une installation Server Core via RDP est en fait possible et donnera la même interface que la connexion à la console - une instance de cmd.exe.

Options populaires et non natives:

Même si Windows fournit maintenant quelques options natives pour accéder à un serveur distant sur un CLI, ce n'était pas toujours le cas, et en conséquence, un certain nombre de solutions tierces assez populaires ont été créées. Les trois plus notables sont ci-dessous.

  1. Installer SSH sur votre serveur Windows

    • Si vous devez simplement avoir SSH, c'est aussi une option, et il y a n guide sur social.technet pour savoir comment installer OpenSSH sur Server 2008.
    • Probablement le plus utile pour les administrateurs d'autres systèmes (* nix, BSD, etc.) qui font un usage intensif de SSH à cette fin, bien qu'il y ait des avantages, même pour les administrateurs Windows uniquement, à avoir un client d'émulateur de terminal unique (comme PuTTY ) stocke un certain nombre d'ordinateurs cibles et des paramètres personnalisés (ou standardisés) pour chacun.

  2. PSExec

    • L'option d'origine pour exécuter des commandes à distance sur une boîte Windows via Windows CLI, cela fait partie de l'excellent Sysinternals Suite . L'un des très rares packages "indispensables" pour les administrateurs Windows, les outils SysInternals ont été si largement respectés et utilisés que SyInternals a été racheté par Microsoft, et les outils sont maintenant quelque peu officiellement pris en charge par Microsoft.
    • Tout comme avec WinRS/RM, PSExec peut être utilisé pour émettre des commandes uniques vers un serveur distant ou pour lancer une instance interactive de cmd.exe sur un ordinateur distant.
      • Comme avec: psexec \\myserver.mydomain.tld cmd
    • Comme avec les autres options, il y a des étapes à suivre pour s'assurer PSExec est réellement capable de se connecter à la machine cible .

  3. Ajoutez un dossier d'utilitaires au serveur et stockez sa valeur dans la variable système% PATH%

    • Comme cela a été noté dans les commentaires, il existe de nombreux bons programmes SysInternals qui peuvent être exécutés sur la ligne de commande et ciblés sur un système distant, et cela est vrai pour plus que SysInternals.
    • Fondamentalement, regroupez un ensemble de vos utilitaires Windows préférés dans un dossier que vous envoyez à tous vos serveurs et ajoutez ce dossier au %PATH% variable d'environnement de vos systèmes . Les deux se font facilement via GPO.
      • (J'inclus le Sysinternals Suite , PuTTY , WinDirStat et un tas de scripts personnalisés que je me retrouve à réutiliser) dans un dossier qui est poussé à tous mes serveurs
    • De toute évidence, cela est utile pour plus que la simple gestion des systèmes Windows via CLI, mais je le trouve si utile que je pense que cela vaut la peine d'être inclus de toute façon.
109
HopelessN00b

Juste pour être complet: bien que ce ne soit pas la meilleure solution pour diverses raisons, chaque système Windows prend en charge le service Telnet, qui peut être activé à partir de la liste des fonctionnalités.

L'implémentation telnet de Microsoft prend également en charge l'authentification NTLM. Ainsi, contrairement au telnet standard pour un système Unix, aucun mot de passe en texte clair n'est envoyé sur le réseau lors de son utilisation.

5
Massimo