WavebreakmediaMicro - Fotolia

PowerShell Core's march ahead gives pause for IT admins

As Microsoft's PowerShell Core open source project progresses, some question the future of Windows PowerShell in the company's cloud-focused strategy.

Microsoft's roadmap plans for PowerShell indicate the Windows version won't be along for the ride.

A production version of Microsoft's open source PowerShell automation and configuration management tool, PowerShell Core 6.0, will arrive by the end of 2017, Joey Aiello, program manager at Microsoft, wrote in a blog post last month. Microsoft will continue to support Windows PowerShell 5.1, but only to supply critical fixes, with no expectation for big feature updates or lower-priority fixes.  

In short, PowerShell users who want function upgrades must switch from Windows PowerShell to PowerShell Core, even though it's missing some features, such as PowerShell Workflow. And with few details on an expiration date, some wonder if this is the end of the road for Windows PowerShell.

"Microsoft specifically said PowerShell Core is not going to replace Windows PowerShell -- yet," said Wes Miller, research analyst at Directions on Microsoft. "PowerShell Core is a separate effort, and Microsoft will be working to shore it up. In the meantime, Windows PowerShell stays and keeps working the way we expect it to."

Open source switch brings seismic shifts

In August 2016, Microsoft open-sourced PowerShell -- its venerable automation and configuration management tool -- and made it available on Linux and macOS; though, the company reaffirmed its commitment to Windows at the same time. The move stunned many longtime Microsoft observers, who witnessed PowerShell's debut as a curiosity in 2006 then blossom into an integral management tool for Windows Server, Microsoft Azure and the Office 365 productivity platform. 

Jeffrey Snover, technical fellow at Microsoft, built PowerShell to bring Unix command-line functionality to Windows, but with key enhancements. Instead of unstructured text, PowerShell works with objects and uses a series of commands called cmdlets to build scripts that handle various administrative jobs.

"PowerShell represents Snover's vision for what a better Linux shell would look like. He just happened to implement it on Windows first because he worked for Microsoft," said Don Jones, a PowerShell expert and president of PowerShell.org.

Microsoft has recently made a number of unpopular moves in the server space, including a switch to the rollup servicing model, cancelled Server Management Tools service in Azure and reduced feature set in Windows Server 2016's Nano Server. But administrators who rely on Windows PowerShell have no cause for concern.

"[Windows PowerShell] still has a ton of capabilities that PowerShell Core doesn't have -- might never have -- simply because the need to manage Exchange Server is not something you would ever need on Linux," Jones said. "I think Windows PowerShell still has a strong life."

Move to open source requires a proper scripting tool

When administrators want to advance from one-off commands to develop more full-featured scripts, coding in Notepad isn't the answer. They need an integrated development environment to provide time-saving enhancements, such as automatic code completion and a debugger with breakpoints and stepping features.

Microsoft's PowerShell Integrated Scripting Environment (ISE), which was added to PowerShell 2.0 in 2009, included features to help administrators write scripts more easily, such as a regions function to work in specific portions of code and color-coded syntax.

With the cross-platform version of PowerShell Core, Microsoft had to provide a PowerShell scripting tool that worked on other platforms.

"One of the biggest problems of PowerShell running on the Mac or on Linux is that you didn't have the ISE. Why is that a big deal? For casual PowerShell scripters, not having ISE is the equivalent to not having PowerShell -- you might as well just give up," said Wes Miller, research analyst at Directions on Microsoft.

Microsoft laid the groundwork for PowerShell Core development when it released Visual Studio Code in 2015. This free, cross-platform offering extends its functionality through a number of plug-ins, such as the PowerShell extension released in May 2017 that enables Linux, Windows and macOS platforms to build and test PowerShell scripts. While lightweight compared to Visual Studio IDE, it matches many of the features found in other popular code editors, such as Eclipse.

Why the cloud paved the way for PowerShell Core

At a recent PowerShell User Group meeting in Boston, Snover said Windows PowerShell achieved its purpose as a complete Windows scripting tool with the 5.1 release. Administrators use it to manage most devices in the data center because it's widely supported by Microsoft's partners.

"If you look at the on-premises data center infrastructure -- the traditional server, storage array, network switch, virtualization infrastructure -- PowerShell is the lingua franca for that space," said Paul Delory, research director at Gartner.

As virtualization matured and the use of monolithic servers began to fade, IT departments maximized their server hardware investment to run multiple workloads -- some with a relatively short lifecycle -- and they used PowerShell scripts to handle much of the tedious deployment work.

"You can configure one server with a GUI, but if you're building 50 servers -- or you want servers to be spun up and spun down on demand -- this is something that has to be automated," Delory said.

It's no coincidence that work on PowerShell ramped up as Microsoft expanded the Azure cloud platform. The company uses PowerShell extensively to manage its cloud and developed newer features such as classes and Desired State Configuration to automate administrative work. The forthcoming Azure Stack appliance contains more than 250,000 lines of PowerShell code to deploy, maintain and secure the system.

"Azure runs a ton of Linux workloads. The ability to run PowerShell inside all the guest operating systems is powerful from the Azure management perspective," Jones said.

We want PowerShell to be the connector of the hybrid cloud.
Jeffrey Snovertechnical fellow at Microsoft

With a change in focus to PowerShell Core, Microsoft combined its PowerShell team with its Azure Automation and Operations Management Suite team to devote more personnel to the cross-platform project and other areas that PowerShell touches, such as Azure and various applications and services. Microsoft's goal is to build a comprehensive management platform for users on different operating systems to control their entire infrastructure.

"We want PowerShell to be the connector of the hybrid cloud," Snover said. "We want to be able to use PowerShell from any client to manage any server running in any cloud, or on premises using any hypervisor, storage stack and networking stack."

Suspicions linger around the 'new' Microsoft

Microsoft surprised many IT veterans with a stream of other open-source-friendly disclosures in 2016. The company discussed plans for a Linux version of its SQL Server database application, it added the Linux Subsystem for Windows to Windows 10 and it joined the Linux Foundation at the Platinum level. But gradual changes to Linux, such as exposing more services through APIs and returning structured objects, have brought it closer to how Windows operates, which might weaken resistance to PowerShell Core.

"As more and more of the Linux world produces APIs and structured documents, PowerShell becomes a stronger shell for them," Snover said.

But many in the open source community can't embrace Microsoft's about-face from a proprietary software vendor to a company that writes blogs entitled "Microsoft loves Linux."

"It's a bit of a paradigm shift, but at the same time, it's just Microsoft trying make this more about its services in the cloud and its management infrastructure down below. Is it going to be enough to win over everybody who's still scared of Microsoft? Absolutely not," Miller said.

Next Steps

Windows Server 2016 release nudges admins toward cloud

How to keep talented IT pros inspired

Work with objects to build a PowerShell foundation

Dig Deeper on Windows administration tools