Trends tend to go in cycles. With computers, we’ve seen the old become the new back to the old, and back to the new. Take the transformation from mainframes to PCs back to big servers. Same thing has happened with computer languages. One of the most notable things has been the rebirth of the command prompt… In the dark ages, mainframe / Unix admins used the command prompt to manage the system because nothing else existed. Then came the GUI tool. Wonderful! Visual! Easy to see, easy to learn. Unfortunately, difficult to automate. For one or two servers, that wasn’t a problem. As tools like Amazon’s Cloud computing, and Microsoft’s Windows Azure become more prevalent, though, managing by GUI becomes very difficult. For Unix / Linux systems, there is a very rich scripting ecosystem. But what about for Windows systems?
Enter Windows PowerShell
PowerShell started as a way manage systems via the command line using .NET, and has expanded to encompass everything from Exchange to SQL Server to Windows Azure. The current version of PowerShell is vastly different from the original v1.0, with almost all commands being pipe-able and reusable. The new remoting features are amazing. There is even a built in web site to allow accessing the command line via a web server. Yes, Unix/Linux admins will go ‘so what, this has all been done with Unix before’. This is VERY true. It’s just nice to have this built into Windows as a native component rather than as a third party add-in. Also, PowerShell is built around .NET with all of the latest and greatest concepts such as fully dynamic objects and duck typing.
Having said all that, PowerShell is one of my top things ‘to learn’. After checking out the initial Jump Start Course on the Microsoft Virtual Academy, I’ve been trying to ‘live in PowerShell’. It certainly makes sense when working with multiple machines. The remoting alone makes managing multiple web servers in a farm easier.