Un ingénieur Microsoft retrace les grandes lignes de l'évolution de la ligne de commande Windows
Et donne plus de détails sur la Console Windows

Le , par Stéphane le calme, Chroniqueur Actualités
Rich Turner, de Microsoft, s’est amusé à proposer une série de billets de blog retraçant l’évolution de la ligne de commande, allant de ses origines pour parvenir à ce que Microsoft propose à l’heure actuelle. Il se peut que vous ne voyiez jamais ou rarement des scripts batch ou de ligne de commande en cours d'exécution, car beaucoup sont exécutés en arrière-plan, par exemple lors de la connexion à un PC de travail. Mais des centaines de milliards de scripts et de commandes en ligne de commande sont exécutés tous les jours sous Windows uniquement.

La ligne de commande et le shell

La ligne de commande ou CLI (Command Line Interface / Interpreter) décrit le mécanisme le plus fondamental par lequel un humain exploite un ordinateur: Une CLI accepte l'entrée tapée par l'opérateur et exécute les commandes demandées.

Par exemple, echo Hello écrit le texte "Hello" sur le périphérique de sortie (qui peut être un écran). dir (Cmd) ou ls (PowerShell / * NIX) répertorie le contenu du répertoire en cours, etc.

Dans les ordinateurs précédents, les commandes disponibles à l'opérateur étaient souvent relativement simples, mais les opérateurs exigeaient rapidement de plus en plus de sophistication, et la possibilité d'écrire des scripts pour automatiser des tâches banales, répétitives ou complexes. Ainsi, les processeurs de ligne de commande ont gagné en sophistication et ont évolué vers ce que l'on appelle communément les « shell » de ligne de commande.

Sous UNIX / Linux, le shell original UNIX (sh) a inspiré une pléthore de shell, dont le shell Korn (ksh), le shell C (csh) et le Bourne Shell (sh), qui a engendré le Bourne Again Shell (bash), etc.


Dans le monde de Microsoft :

  • Le MS-DOS d'origine (command.com) était un shell de ligne de commande relativement simple (sinon étrange) ;
  • L'invite de commande de Windows NT (cmd.exe) a été conçue pour être compatible avec les scripts command.com/batch MS-DOS hérités et a ajouté plusieurs commandes supplémentaires pour le nouveau système d'exploitation, plus puissant
  • En 2006, Microsoft a publié Windows PowerShell
    • PowerShell est un shell de ligne de commande basé sur un objet moderne inspiré des fonctionnalités des autres shells. Il a été construit sur et intègre la puissance du .NET CLR & .NET Framework ;
    • Grâce à PowerShell, les utilisateurs Windows peuvent contrôler, scripter et automatiser pratiquement tous les aspects d'une machine Windows, d'un groupe de machines Windows, d'un réseau, de systèmes de stockage, de bases de données, etc.
    • En 2017, Microsoft publie PowerShell en open-source et lui permet de fonctionner sur macOS et de nombreuses versions de Linux et BSD!
  • En 2016, Microsoft a présenté Windows Subsystem for Linux (WSL)
    • Celui ci active les véritables binaires Linux non modifiés pour qu'ils s'exécutent directement sous Windows 10 ;
    • Les utilisateurs ont la possibilité d’installer une ou plusieurs distributions Linux depuis le Windows Store
    • Les utilisateurs peuvent exécuter une ou plusieurs instances de distribution les unes à côté des autres et des applications et outils Windows existants
    • WSL permet aux utilisateurs Windows d'exécuter côte à côte tous leurs outils Windows préférés et leurs outils de ligne de commande Linux sans double amorçage ou utilisation de machines virtuelles gourmandes en ressources (VM)


Évolutions de la ligne de commande

MS-DOS

Dans les premières années de l'industrie du PC, la plupart des ordinateurs fonctionnaient entièrement en tapant des commandes dans la ligne de commande, qu’il soit question de machines basées sur Unix, CP / M, DR-DOS, ou d'autres. En fin de compte, MS-DOS a pris de l'importance en tant que système d'exploitation standard de facto pour les PC IBM compatibles, en particulier dans les entreprises :


MS-DOS a été très rapidement adopté par les entreprises, grandes et petites, qui, combinées, ont créé plusieurs millions de scripts batch, dont certains sont encore utilisés aujourd'hui! Les scripts batch sont utilisés pour automatiser la configuration des machines des utilisateurs, définir / modifier les paramètres de sécurité, mettre à jour le logiciel, le code de build, etc.

Tandis que la ligne de commande est un outil puissant entre les mains de ceux qui ont la patience et la ténacité d'apprendre à tirer le meilleur parti des commandes et des outils disponibles, la plupart des utilisateurs non techniques ont eu du mal à utiliser efficacement leurs ordinateurs. La plupart n'aimait pas devoir apprendre et se souvenir de nombreuses commandes apparemment arcanes / abrégées pour que leurs ordinateurs fassent quelque chose d'utile.

Aussi, une expérience utilisateur plus conviviale et axée sur la productivité était requise.

L'interface graphique devient mainstream

Vient alors l'interface utilisateur graphique (GUI), inspiré par le travail de Xerox 'Alto.

De nombreuses interfaces graphiques concurrentes sont apparues rapidement dans Apple Lisa et Macintosh, Commodore Amiga (Workbench), Atari ST (GRI de DRI), Acorn Archimedes (Arthur / RISC OS), Sun Workstation, X11 / X Windows et bien d'autres, y compris Microsoft Windows:

Windows 1.0 est arrivé en 1985, et était fondamentalement une application MS-DOS qui fournissait un simple environnement GUI à fenêtre en mosaïque, permettant aux utilisateurs d'exécuter plusieurs applications côte à côte:


Windows 1.01 en cours d'exécution sur MS-DOS

Cependant, Microsoft a réalisé qu’il pourrait uniquement étendre l'architecture et les capacités de MS-DOS et Windows et qu’il avait donc besoin d'un nouveau système d'exploitation sur lequel il devait se baser pour construire son avenir.

Microsoft s’essaye sur Unix et devient même un leader

Lors du développement de MS-DOS, Microsoft était également occupé à fournir Xenix - le port Unix de Microsoft version 7 - à une variété d'architectures de processeurs et de machines, y compris les Z8000, 8086/80286 et 68000.

En 1984, Xenix de Microsoft était devenu la variante Unix la plus populaire au monde !

Cependant, l'éclatement de Bell Labs - le siège d'Unix par le gouvernement américain - a donné naissance à AT&T qui a commencé à vendre Unix System V aux fabricants d'ordinateurs et aux utilisateurs finaux.

Microsoft a estimé que sans leur propre système d'exploitation, leur capacité à atteindre leurs objectifs futurs serait compromise. Cela a conduit à la décision de quitter Xenix: en 1987, Microsoft a transféré la propriété de Xenix à son partenaire The Santa Cruz Operation (SCO) avec lequel Microsoft avait travaillé sur plusieurs projets de portage et d'amélioration de Xenix sur diverses plateformes.

Microsoft et IBM sur OS/2

En 1985, Microsoft a commencé à travailler avec IBM sur un nouveau système d'exploitation appelé OS / 2. OS / 2 a été conçu à l'origine pour être « un DOS plus performant » et a été conçu pour tirer parti de certains des processeurs 32 bits modernes et d'autres technologies émergeant rapidement des OEM, y compris IBM.

Cependant, l'histoire d'OS / 2 était au mieux tumultueuse. En 1990, Microsoft et IBM ont mis fin à leur collaboration. Cela a été dû à un certain nombre de facteurs, y compris les différences culturelles importantes entre les développeurs IBM et Microsoft, les défis de planification, et le succès explosif et la croissance de l'adoption de Windows 3.1. IBM a continué le développement et le support d'OS / 2 jusqu'à la fin de 2006.

En 1988, Microsoft était convaincu que son succès futur exigeait une approche plus vaste, plus audacieuse et plus ambitieuse. Une telle approche nécessiterait un nouveau système d'exploitation moderne qui soutiendrait les objectifs ambitieux de l'entreprise.


Microsoft se lance sur Windows NT

En 1988, Microsoft a embauché Dave Cutler, créateur du système d'exploitation VAX / VMS populaire et très respecté de DEC. L'objectif de Cutler est de créer un nouveau système d'exploitation moderne et indépendant de la plateforme, que Microsoft posséderait, contrôlerait et qui fonderait la plus grande partie de son avenir.

Ce nouveau système d'exploitation est devenu Windows NT - la base qui a évolué vers Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8 et Windows 10, ainsi que toutes les versions de Windows Server, Windows Phone 7+, Xbox et HoloLens !

Windows NT a été conçu dès le début pour être indépendant de la plateforme, ayant été initialement conçu pour supporter l'i860 d'Intel, puis le MIPS R3000, Intel 80386+, DEC Alpha et PowerPC. Depuis lors, la famille Windows NT OS a été portée pour prendre en charge les architectures de processeur IA64 "Itanium", x64 et ARM / ARM64, entre autres.

Windows NT a fourni une interface de ligne de commande via son application de terminal "Windows Console" et le shell "Command Prompt" (cmd.exe). Cmd a été conçu pour être aussi compatible que possible avec les scripts batch MS-DOS, pour faciliter l'adoption de la nouvelle plateforme par l'entreprise.

La puissance de PowerShell

Bien que Cmd est toujours dans Windows jusqu’à ce jour, étant donné que son but principal est de rester aussi rétrocompatible que possible, Cmd est rarement amélioré. Même "corriger les bogues" est parfois difficile si ces "bogues" existaient dans MS-DOS ou des versions antérieures de Windows !

Au début des années 2000, le shell Cmd était déjà à bout de souffle et Microsoft et ses clients avaient un besoin urgent d'une expérience de ligne de commande plus puissante et plus flexible. Ce besoin a alimenté la création de PowerShell (qui provient du "Manifeste de la Monade" de Jeffrey Snover).


PowerShell est un shell orienté objet, contrairement aux shell basés sur les fichiers / flux généralement présents dans le monde * NIX: plutôt que de gérer des flux de texte, PowerShell traite les flux d'objets, permettant aux scripteurs PowerShell d'accéder directement aux objets et de manipuler leurs propriétés, plutôt que d'avoir à écrire et maintenir beaucoup de script pour analyser et manipuler le texte (par exemple via sed / grep / awk / lex / etc.)

PowerShell a été adopté par de nombreuses plateformes Microsoft et des partenaires, notamment Windows, Exchange Server, SQL Server, Azure et bien d'autres, et fournit des commandes pour administrer et contrôler pratiquement tous les aspects d'une machine Windows et / ou de l'environnement de façon très consistante.

PowerShell Core est disponible pour Windows et différentes versions de Linux, BSD et macOS!

Windows 10, une nouvelle ère pour la ligne de commande Windows!

Au début du développement de Windows 10, Microsoft a demandé à la communauté Windows quelles fonctionnalités elle voulait dans différentes zones du système d'exploitation. La communauté des développeurs s’est montrée particulièrement claire dans ses demandes et a souhaité que Microsoft :
  • apporter des améliorations majeures à la console Windows
  • donner aux utilisateurs la possibilité d'exécuter des outils Linux sous Windows.

Sur la base de ces commentaires, Microsoft a formé deux nouvelles équipes:

L'équipe de la console Windows et de la ligne de commande, chargée de prendre en charge et de réorganiser l'infrastructure de la console Windows et de la ligne de commande
Une équipe chargée d'activer les binaires Linux authentiques et non modifiés pour Windows 10 - le sous-système Windows pour Linux (WSL)

Que fait la console ?

Elle s’occupe de gérer les entrées de l'utilisateur :
  • elle accepte la saisie à partir de périphériques tels que le clavier, la souris, le toucher, le touchpen, etc.
  • elle traduit l'entrée en caractères pertinents et / ou en séquences ANSI / VT
  • elle envoie des caractères à l'application / outil / shell connecté


Elle gère les sorties de l'application :
  • elle accepter la sortie de texte à partir d'une application / outil Command-Line connecté
  • elle met à jour l'affichage selon les besoins, en fonction de la sortie de l'application reçue (par exemple, le texte de sortie, déplacez le curseur, définissez la couleur du texte, etc.)


Elle gère les interactions du système :
  • elle se lance lorsqu’elle est invoquée
  • elle gère les ressources
  • elle permet de redimensionner / agrandir / réduire, etc.
  • elle se termine si nécessaire, ou lorsque le canal de communication est fermé / terminé


Cependant, la console Windows fait les choses un peu différemment:

Dans la console Windows

Avant Windows 7, les instances de la console Windows étaient hébergées dans CSRSS (Client Server Runtime Subsystem). Dans Windows 7, toutefois, la console a été extraite de CSRSS pour des raisons de sécurité et de fiabilité, et un nouvel hôte a été ajoutée aux binaires suivants:
  • conhost.exe - le mode utilisateur Windows Console UX et plomberie de ligne de commande
  • condrv.sys - un pilote de noyau Windows fournissant une infrastructure de communication entre conhost et un ou plusieurs shell / outils / applications de ligne de commande


Les principaux composants de la console sont les suivants (du bas vers le haut):

  • ConDrv.sys - pilote en mode noyau
    • Fournit un canal de communication haute performance entre la console et les applications de ligne de commande connectées
    • Messages de contrôle d'E / S (IOCTL) entre les applications de ligne de commande et la console à laquelle ils sont "attachés"
    • Les messages IOCTL de la console contiennent
      • des données représentant des demandes d'exécution d'appels d'API sur l'instance de la console
      • du texte envoyé de la console à l'application de ligne de commande
  • ConHost.exe - Application graphique Win32:
    • ConHost Core - les internes et la plomberie de la console
      • Serveur API: convertit les messages IOCTL reçus des applications de ligne de commande en appels API et envoie des enregistrements de texte de la console à l'application de ligne de commande
      • API: implémente l'API et la logique de la console Win32 derrière toutes les opérations que la console peut être appelée à exécuter
      • Input Buffer: stocke les enregistrements d'événements du clavier et de la souris générés par l'entrée de l'utilisateur
      • VT Parser: Si cette option est activée, analyse les séquences VT à partir du texte, extrait celles trouvées du texte et génère des appels d'API équivalents à la place.
      • Output Buffer: stocke le texte affiché sur l'affichage de la console. Essentiellement un tableau 2D de structures CHAR_INFO qui contient les données et les attributs de chaque cellule (plus sur le tampon ci-dessous)
      • Autre: Non inclus dans le diagramme ci-dessus comprennent l'infrastructure des paramètres de stockage / récupération des valeurs du registre et / ou des fichiers de raccourci, etc.
    • Console UX App Services - la couche Console UX & UI
      • Gère la disposition, la taille, la position, etc. de la fenêtre de la console à l'écran
      • Affiche et gère les paramètres de l'interface utilisateur, etc.
      • Gère la file d'attente des messages Windows, traite les messages Windows et traduit les entrées utilisateur dans les enregistrements d'événements de la clé et de la souris, en les stockant dans le tampon d'entrée.

Source : Microsoft

Et vous ?

Que pensez-vous des évolutions de la ligne de commande dans Windows ?

Voir aussi :

Build 2018 : retour sur les annonces sur le sous-système Windows pour Linux (WSL), lors de la conférence de Microsoft dédiée aux développeurs
Windows 10 : plus d'outils ligne de commande via la Redstone 4 avec l'arrivée de distributions Linux additionnelles sur le Store
Microsoft ajoute le support de Curl et Tar dans Windows 10, accessibles directement depuis la ligne de commande
Microsoft ajoute le support d'un client OpenSSH dans Windows 10 accessible directement depuis la ligne de commande
Microsoft parle des évolutions du sous-système Linux WSL, qui vont accompagner la MàJ Creators Fall Update attendue le 17 octobre


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de ShigruM ShigruM - Provisoirement toléré https://www.developpez.com
le 22/07/2018 à 21:49
dans le meme genre, j'aimerais retracé les annonces commercial de MS :
1995 : Roling Stone pour windows 95
2001: Madona pour windows xp
2007: Vista avec la fete dans toute les grande ville du monde (feu d'artifice a paris a cette époque ! mieux que celui du 14 juillet rien que sa)


puis après le départ de Bill plus rien... plus rien...
elle est passé ou la passion de windows ?

windows sans de la com démesuré c'est comme imaginer Titanic sans Céline Dion ou le roi lions sans Hans Zimmer remplacé par un banlieusard qui fait de la zic avec une poubelle
Cela n’enlève rien au faite que windows est le meilleur os au monde, mais cela donne une mauvaise première impression
Avatar de redcurve redcurve - Membre averti https://www.developpez.com
le 23/07/2018 à 0:17
Il y a une méga update de la console qui arrive
Avatar de redcurve redcurve - Membre averti https://www.developpez.com
le 23/07/2018 à 0:18
Citation Envoyé par ShigruM Voir le message
dans le meme genre, j'aimerais retracé les annonces commercial de MS :
1995 : Roling Stone pour windows 95
2001: Madona pour windows xp
2007: Vista avec la fete dans toute les grande ville du monde (feu d'artifice a paris a cette époque ! mieux que celui du 14 juillet rien que sa)


puis après le départ de Bill plus rien... plus rien...
elle est passé ou la passion de windows ?

windows sans de la com démesuré c'est comme imaginer Titanic sans Céline Dion ou le roi lions sans Hans Zimmer remplacé par un banlieusard qui fait de la zic avec une poubelle
Cela n’enlève rien au faite que windows est le meilleur os au monde, mais cela donne une mauvaise première impression
Perso s'est mon os de prédilection, je touche de temps en temps à macos et linux aussi mais je déteste vraiment macos tout est tellement fermé c'est juste hallucinant
Avatar de slowsaz slowsaz - Membre actif https://www.developpez.com
le 23/07/2018 à 9:24
Citation Envoyé par redcurve Voir le message
Perso s'est mon os de prédilection, je touche de temps en temps à macos et linux aussi mais je déteste vraiment macos tout est tellement fermé c'est juste hallucinant
C'est vrai que Windows est tellement ouvert
Avatar de redcurve redcurve - Membre averti https://www.developpez.com
le 23/07/2018 à 9:53
Citation Envoyé par slowsaz Voir le message
C'est vrai que Windows est tellement ouvert
Bien mais alors bien plus que macos, il n'y a pas besoin d'avoir les sources pour que ce soit ouvert, windows ne m’empêche pas de faire ce que je veux ne vas pas me dire tu ne peux installer ce soft de virtualisation etc. etc. Il me fout une paix royale
Avatar de slowsaz slowsaz - Membre actif https://www.developpez.com
le 23/07/2018 à 10:14
Plus que macOs c'est certain et encore heureux.
Avatar de redcurve redcurve - Membre averti https://www.developpez.com
le 23/07/2018 à 10:34
Citation Envoyé par slowsaz Voir le message
Plus que macOs c'est certain et encore heureux.
Ce qui me fait délirer avec les libristes c'est que tu as l'impression qu'ils passent leur journée à lire le code source de leur OS. Genre pour faire un copier/coller il faut dépiauter tout le système quoi. Au final source dispo ou pas tu fais juste un copier/coller et tu fais confiance aux types qui ont conçu le système point barre.

Comment si j'avais besoin des sources de Windows pour savoir comment fonctionne le gestionnaire de thread du système ou comment créer une fibre, ou pourquoi NT est plus rapide que Linux sur certains points et inversement sur d'autres.
Avatar de slowsaz slowsaz - Membre actif https://www.developpez.com
le 23/07/2018 à 11:30
Citation Envoyé par redcurve Voir le message
Ce qui me fait délirer avec les libristes c'est que tu as l'impression qu'ils passent leur journée à lire le code source de leur OS. Genre pour faire un copier/coller il faut dépiauter tout le système quoi. Au final source dispo ou pas tu fais juste un copier/coller et tu fais confiance aux types qui ont conçu le système point barre.

Comment si j'avais besoin des sources de Windows pour savoir comment fonctionne le gestionnaire de thread du système ou comment créer une fibre, ou pourquoi NT est plus rapide que Linux sur certains points et inversement sur d'autres.
Je reprendrai ton argument pour te dire que ce qui me fait délirer c'est la confiance que les non libristres ont envers toutes ces entreprises qui peuvent faire ce qu'elles veulent de vos informations personnelles et même de vos programmes. Du jour au lendemain, Microsoft peut tout changer dans son OS, enlever n'importe quel programme (déjà vécu même si on peut le réinstaller), faire n'importe quoi en fait vu que votre ordinateur et son contenu leur appartiennent. Je t'invite à t'amuser à lire toutes les conditions d'utilisation de Windows 10, ça a de quoi faire peur quand on s'y intéresse de près.

Ps : Avoir les sources permet de modifier l'OS comme nous le souhaitons, en enlevant beaucoup d'éléments inutiles et lourds ou encore le tracking justement
Avatar de micka132 micka132 - Membre expert https://www.developpez.com
le 23/07/2018 à 12:11
Citation Envoyé par slowsaz Voir le message
les non libristres
En vrai s'il y a beaucoup de "libristes" il y a très peu de "non libristes".

Citation Envoyé par slowsaz Voir le message
Ps : Avoir les sources permet de modifier l'OS comme nous le souhaitons, en enlevant beaucoup d'éléments inutiles et lourds ou encore le tracking justement
Ca c'est la théorie, en pratique très peu de personne savent ou prennent le temps de faire quoi que soit sur les sources. C'est d'ailleurs ce qui en fait une arme bien plus dangereuse que de ne pas avoir les sources. D'un coté tu te méfies, de l'autre non. Les exemples commencent à sortir, et je prédis que dans quelques années ça sera une hécatombe. Des dizaines et des dizaines de logiciels les plus utilisés seront "infestés" par des bouts de code libre.
Avatar de Jiji66 Jiji66 - Membre confirmé https://www.developpez.com
le 23/07/2018 à 14:54
Citation Envoyé par Stéphane le calme Voir le message

Microsoft et IBM sur OS/2

En 1985, Microsoft a commencé à travailler avec IBM sur un nouveau système d'exploitation appelé OS / 2. OS / 2 a été conçu à l'origine pour être « un DOS plus performant » et a été conçu pour tirer parti de certains des processeurs 32 bits modernes et d'autres technologies émergeant rapidement des OEM, y compris IBM.

Cependant, l'histoire d'OS / 2 était au mieux tumultueuse. En 1990, Microsoft et IBM ont mis fin à leur collaboration. Cela a été dû à un certain nombre de facteurs, y compris les différences culturelles importantes entre les développeurs IBM et Microsoft, les défis de planification, et le succès explosif et la croissance de l'adoption de Windows 3.1. IBM a continué le développement et le support d'OS / 2 jusqu'à la fin de 2006.

En 1988, Microsoft était convaincu que son succès futur exigeait une approche plus vaste, plus audacieuse et plus ambitieuse. Une telle approche nécessiterait un nouveau système d'exploitation moderne qui soutiendrait les objectifs ambitieux de l'entreprise.
Quiconque a travaillé sur OS/2 sait que c'était bien autre chose qu'un "DOS plus performant". Microsoft a tenté de pirater OS/2 ce en quoi IBM ne c'est pas laissé faire et à bêtement pensé que les qualités de OS/2 triompheraient inévitablement face aux "déchets logiciels" produits par Microsoft. C'était sans compter sur sur la puissance de persuasion commerciale de Microsoft.
Contacter le responsable de la rubrique Accueil