Why Learn Windows Systems Administration from the CLI?

  • In the world of systems administration, Windows remains the last significant non-UNIX operating system left on the market and one of two key ecosystems (along with Linux) across nearly all of IT. Few question why it is important to know why managing Windows is important, but what may not be so obvious is why understanding how to approach Windows System Administration from a command line perspective is important. I hope to answer this here.

    First, it is the Microsoft way. Contrary to many personal opinions in the Windows user base, Microsoft has made a strong, concerted effort to make sure, since 2006, to educate and inform their ecosystem that command line administration is the future, primarily with PowerShell and integrated PowerShell CmdLets.

    Prior to 2006, Microsoft had always maintained that the graphical user interface was the primary shell for Windows (meaning the Windows NT family which includes Windows NT, Windows and Windows 10 brands), even servers, and that while a command line existed and was available, it was always a secondary tool for limited tasks. And prior to 2006, efforts at automation languages were fragmented between cmd and batch files, VBScript, and JScript all officially, and strong third party offerings; with none of these tools matching Microsoft's 2002 commitment to .NET.

    While graphical interfaces remains a strong part of Windows today, the tipping point was long ago reached and only "most" functions can be managed from GUI while all can be managed from the command line (matching all other enterprise OSes since the 1990s and later.) Today Microsoft not only promotes the command line as "they" way to manage local systems, they have for many releases been promoting the idea of not even installing a GUI outside of desktops and remote desktop servers. The GUI-less server is Microsoft's recommended and preferred approach, again, following industry standards.

    Because Microsoft promoted GUIs for so long, from roughly 1993 - 2006, and because of the 1998 Effect, there remains, over a decade later, a strong trend in the ecosystem to keep repeating the same mantra, even though Microsoft finally abandoned it. At the time in 1993, GUI based administration had some followers believing that it would be the future, that the command line was dead and had only been an artefact of underpowered systems and that GUIs needed only modern software and more powerful hardware to take over. But this proved to be untrue and the ideas of the time that admins would eschew automation, that bigger attack surfaces and wasted CPU cycles would be unimportant, that network bandwidth would be of no concern, that multiple admins on a system would never be needed, that GUIs would become more efficient than typing, and so forth proved to be false hopes and command line administration continued to outperform GUI administration putting the Windows ecosystem into a difficult position for a very long time. But to combat the obviousness that command lines were vastly superior for performance, security, efficiency, and automation, Microsoft was forced to use very strong marketing to promote their GUI-based system and that marketing has stuck far longer than they would have hoped.

    I originally write this in 2019, exactly 26 years into the history of the Windows NT family, and for exactly half of that time Microsoft promoted GUI based systems and administration, and for half that time they have promoted headless servers and command line administration. As we move forward, the GUI-based Windows era will quickly begin to become a historical novelty rather than the prominent view of the platform as is often still held today.

    Second, it is the logical way to do administration at any scale. Part of why Microsoft chose to focus on GUI administration decades ago was because they were working from the belief that the key role of Windows was in the SMB market, and that a single server (with a single OS on it) would be the server of the future. In a single (or extremely few) server mode, GUI administration is decently fast and extremely easy. It makes sense given that expected view of the computing world in which they operated. But quickly many things changed: Windows moved into the enterprise, the rise of the MSP and efficient management of the SMB market, the Internet and remotely accessed systems over a WAN, the increase in computational needs of the SMB market, and virtualization making it reasonable for even tiny deployments to have more than one OS image running. Microsoft had to adapt.

    It is the industry standard approach, and has been since the advent of the first servers many decades ago, to do technical tasks from the command line. Doing so can be extremely fast and efficient, far easier to document and disseminate, repeatable, potentially idempotent, efficient remotely, and easily automatable. Other ecosystems embraced the command line long ago with the last key GUI based systems being MacOS 9 (dying off in 1999), AmigaOS (dying off in 1994), and Novell Netware giving the last hurrah to the concept in 2009. All of these systems were born of the 1980s, when the idea that the GUI would be king was started.

    Third, it is the portable way. Command line administration can be done on any Windows machine. But GUI administration can only be done on machines on which a GUI has been installed. And while GUIs remain common today, that is changing as Microsoft promotes GUI-less installs more and more, and administration of GUI-less systems becomes stronger. As system admins, our command line skills are universal, our GUI skills are not. Command line tools also remain far more stable between releases, while the GUI interface often changes dramatically. Command line administration makes working across editions, installation types, environments, and releases far more standard and simple.

    Fourth, it is the path less traveled. Quite frankly, guides to Windows system administration for GUI based tools is abundant, but education approaching Windows system administration with the same rigors and approaches that we would demand from any other ecosystem are few and far between. Outside of the Windows world, requiring a GUI to do a task is unthinkable and one would hesitate to state one's own knowledge of administration without command line knowledge. We should be treating Windows the same if we want to use Windows at the same enterprise level. We need to elevate the ecosystem to match the platform. Microsoft has done their part, now we need to do ours.

    In today's systems space, Windows isn't going away, but it is changing. The expectations on system administrators who work on Windows are increasing and it is no longer being seen as a dramatically second tier ecosystem, but one that belongs in the enterprise based on its merits. I want to approach Windows administration with this in mind, an approach that makes sense not just for the SMB or the enterprise, but for both, and one that spans to the MSP market, and from desktop to server to virtualization to cloud.