The Future of Windows Server GUI and Powershell


Man, say “no more GUI on Windows Server” in a crowded room of IT professionals, and you’d better be standing near the door. Nothing gets folks more riled up than the idea that they won’t be able to drag-and-click their way through administrative tasks any more. If that’s you, then relax. It’ll be fine.

Microsoft’s goals
Microsoft has a problem. On the one hand, they have a lot of people working in smaller environments who will never be programmers. Not ever. Those folks are only successful with Windows because of the windows – meaning that they’re able to leverage their desktop-centric skills to manage a server.

This is, in fact, how Microsoft got to where it is today. The GUI let it trivialize NetWare, gave it a leg up on Unix, and got Windows into departments and organizations all over the world.

On the other hand, Microsoft is now dealing with organizations that have hundreds and thousands of servers. Those guys are getting a little tired of having to log into three dozen servers, one after the other, just to click a checkbox to change some configuration setting. It’s boring, it’s error-prone, and with today’s salaries it’s downright expensive.

There’s another problem, too, and it’s called server stability. We all want five 9’s: 99.999% server availability. Not a lot of Windows servers achieve it. People still brag, however, about that old NetWare server that’s sitting in a closet somewhere, happily humming along and never needing rebooting. However, it’s a NetWare server without a GUI. Turns out, enabling a GUI on a server operating system can be pretty impactful. Creating and managing the desktop environment requires serious computing power and doing it over and over and over again can definitely have a deleterious effect on server stability. That’s not even mentioning patches: The current GUI-less Server Core version of Windows gets markedly fewer patches than its full-GUI cousin.

So, on the one hand you’ve got folks who need the GUI. On the other, folks who need better automation. And in the middle, servers that could do a lot better if the GUI wasn’t used.

Dealing with the dichotomy

So Microsoft says to itself, “Okay, we need to take the time to build the GUI. But there’s all this functionality that has to go into it, so it’s going to take time. Then we’re supposed to turn around and spend the same amount of time writing the same functionality in a command-line tool? What a waste!”

You might suggest that Microsoft back off a bit and think about it. “Hey,” you might tell them, “why don’t you just move the actual functionality into some external file, like a DLL? Then both the command-line tool and the GUI could use that same functionality.”

Brilliant! And what do you think PowerShell is?

PowerShell commands live in DLLs. PowerShell’s engine is a DLL. What you see when you run PowerShell is a very tiny little interface that allows a human to load those DLLs and make them do stuff. Those same DLLs can also be called from within a GUI: Witness Exchange Server’s GUI console, and the new Server Manager in Windows 8 Server. See, with PowerShell, you get both.

And that’s the path forward

So it’s entirely possible for Microsoft to kill the GUI while still making the GUI. Take the GUI off of the server OS. Use PowerShell to enable command-line management of the server – but run those commands on your workstation. Or, if you prefer, boot up a GUI on your workstation and manage the server from there. Heck, you can almost do that today – you don’t seriously log on to a domain controller to add new users do you? Active Directory Users and Computers runs just fine on your workstation.

Another neat feature of PowerShell is Remoting, which gives commands a universal way of talking to remote servers. So the idea is to never log onto the console, ever again. Just manage everything remotely – using a CLI or a GUI, whichever you prefer – from your client computer. So they’re not really killing the GUI. They’re just moving it off the server, and letting the server be a server.

The problem with this approach up to now is that there’s too many things we can’t configure without using a GUI. Network adapters for example, or the Windows Firewall. I mean, I know you can configure those things from the command-line, but yuck – the syntax is awful. That’s what Microsoft is fixing in Windows 8, giving us everything in PowerShell – meaning everything can have a remote GUI built atop it.

GUI. Command-line. Doesn’t matter, you can take your pick. And you get a more stable server along for the ride. What’s not to love about that?