Microsoft didn’t put a lot of effort into a CLI shell; instead, it concentrated on a GUI shell, which is more compatible with its GUI-based operating systems. (Mac OS X didn’t put any effort into a CLI shell, either; it used the Bash shell.) However, the resulting DOSShell had a variety of limitations, such as conditional and recursive programming structures not being well documented and heavy reliance on goto statements. These drawbacks hampered shell scripters for years, and they had to use other scripting languages or write compiled programs to solve common problems.
The introduction of WSH as a standard in the Windows operating system offered a robust alternative to DOSShell scripting. Unfortunately, WSH presented a number of challenges, as discussed in the preceding section. Furthermore, WSH didn’t offer the CLI shell experience that UNIX and Linux administrators had enjoyed for years, which resulted in Windows administrators being made fun of by the other chaps for the lack of a CLI shell and its benefits.
Luckily, Jeffrey Snover (the architect of PowerShell) and others on the PowerShell team realized that Windows needed a strong, secure, and robust CLI shell for systems management. Enter PowerShell. PowerShell was designed as a shell with full access to the underpinnings of Windows via the .NET Framework, Component Object Model (COM) objects, and other methods. It also provided an execution environment that’s familiar, easy, and secure. PowerShell is aptly named, as it puts the power into the Windows shell. For users wanting to automate their Windows systems, the introduction of PowerShell was exciting because it combined the power of WSH with the familiarity of a traditional shell.
PowerShell provides a powerful native scripting language, so scripts can be ported to all Windows systems without worrying about whether a particular language interpreter is installed. You might have gone through the rigmarole of scripting a solution with WSH in Perl, Python, VBScript, JScript, or another language, only to find that the next system you worked on didn’t have that interpreter installed. At home, users can put whatever they want on their systems and maintain them however they see fit, but in a workplace, that option isn’t always viable. PowerShell solves that problem by removing the need for nonnative interpreters. It also solves the problem of wading through Web sites to find command-line equivalents for simple GUI shell operations and coding them into .cmd files. Last, PowerShell addresses the WSH security problem by providing a platform for secure Windows scripting. It focuses on security features such as script signing, lack of executable extensions, and execution policies (which are restricted by default).
For anyone who needs to automate administration tasks on a Windows system, PowerShell provides a much-needed injection of power. Its object-oriented nature boosts the power available to you, too. If you’re a Windows systems administrator or scripter, becoming a PowerShell expert is highly recommended.
PowerShell is not just a fluke or a side project at Microsoft. The PowerShell team succeeded at creating an amazing shell and winning support within Microsoft for its creation. For example, the Exchange product team adopted PowerShell as the backbone of the management interface in Exchange Server 2007. That was just the start. Other product groups at Microsoft, such as System Center Operations Manager 2007, System Center Data Protection Manager V2, and System Center Virtual Machine Manager, are being won over by what PowerShell can do for their products. In fact, PowerShell is the approach Microsoft has been seeking for a general management interface to Windows-based systems. Over time, PowerShell could replace current management interfaces, such as cmd.exe, WSH, CLI tools, and so on, and become integrated into the Windows operating system as its backbone management interface. With the introduction of PowerShell, Microsoft has addressed a need for CLI shells. The sky is the limit for what Windows systems administrators and scripters can achieve with it.