violetkaipa - Fotolia
While predicting on the future of PowerShell, it helps to take a look back at its beginnings to see where it's going as a cross-platform management tool.
Microsoft released PowerShell in 2006 as part of the Windows desktop and server versions released that year. The company added thousands of cmdlets over the years to expand the tool's reach across the data center and into the cloud.
Microsoft's embrace of Linux, due in large part to the number of Linux virtual machines running on Azure, steered the company to make a significant change with PowerShell in 2016. Microsoft ended development of Windows PowerShell in favor of a new tool called PowerShell Core, which would be an open source project to rework the utility as a cross-platform management tool for Windows, Linux and macOS systems.
A lot of features Windows PowerShell had were missing in the first PowerShell Core release in January 2018, mainly due to a switch in the underlying platform from the Windows-based .NET Framework to the cross-platform .NET Core. These growing pains have largely subsided with subsequent releases to close the gap between the functionality of the two types of PowerShell. Jeffrey Snover, the inventor of PowerShell, has said the Windows edition will always have support but recommends IT pros learn how to use PowerShell Core, which is the version Microsoft uses to manage workloads on Azure.
SearchWindowsServer advisory board members shared their thoughts on the recent changes with the cross-platform management tool and their expectations for the future of PowerShell.
Recent releases broaden appeal beyond Windows admins
Reda Chouffani: Many administrators who might have resisted moving away from familiar tools such as web interfaces or Microsoft Management Console have come to realize that despite the commands written in PowerShell, it is capable of automating some of the most complex and tedious activities.
At first, a lot of IT pros saw PowerShell just as another replacement to the traditional command line that ships with every Windows box. But once they dug deeper, they found how beneficial it was to use PowerShell commands to manage Exchange Server, Office 365, Skype for Business, Azure and a slew of other platforms.
Opening the PowerShell platform to non-Windows platforms after the version 5.1 release was a significant shift for Microsoft meant to encourage administrators who manage Linux to adopt PowerShell as their management and task automation tool.
Changes in the latest preview versions of PowerShell Core 7, which is based on .NET Core 3.0, include more management modules to extend the functionality. Another recent development is the return of the Out-GridView cmdlet to PowerShell Core. Many administrators used this cmdlet in Windows PowerShell to build GUIs for scripts. The PowerShell Core team was able to bring it back based on user feedback and support of WinForms and the Windows Presentation Foundation in .NET Core 3.0.
Azure is the gateway to get Linux users on board
Stuart Burns: There is no getting away from the fact that automation is growing in the world of IT. How that automation is achieved varies, but the one constant is scripting.
Within Linux, Bash scripting, along with languages like Perl and Python, have been the go-to for the serious systems administrator. Microsoft had nothing in this space until relatively recently, in the form of PowerShell for non-Microsoft operating systems. It is a departure from the Microsoft of old, whereby Linux was seen as a second-class citizen, to put it politely.
PowerShell is a good scripting language, but it remains to be seen how popular it will become beyond Windows administrators. Linux administrators tend to stay with tools that do the job. Many have spent years honing their skills and scripts with Bash. They are not familiar with having upgrades forced on them. I know some administrators who run legacy versions of infrastructure mainly because it just refuses to break.
Linux IT pros also have long memories. They don't trust Microsoft for its anti-Linux stance from years ago when former CEO Steve Ballmer called Linux a cancer, which will take a very long time for them to forget.
Until the large Linux vendors support PowerShell as a first-class citizen, it's not likely the community will have the motivation to give PowerShell a chance. For example, on the RedHat exam, there is a basic scripting requirement. There is no outside access -- or time to download or install -- PowerShell so the test-taker has to learn Bash to pass the exam.
One thing Microsoft does have in its favor is the ever-increasing uptake of Linux on the Azure platform. The functionality that PowerShell Core provides, while available in other languages as plug-ins, is definitely easier to utilize on Microsoft's cloud platform.
Some admins need a little extra help to get started
Brian Kirsch: When Microsoft introduced PowerShell in 2006, administrators had a hard time finding a use for it because the scripting and command lines could only go so far at the time.
The key to PowerShell was its task automation framework over a new scripting format. It took many in IT by surprise and gave them capabilities they didn't know they might need.
Fast forward to January 2018 and Microsoft took its first serious step to expand PowerShell beyond Windows. The release of PowerShell Core and Linux support expanded the capabilities of this automation tool. It was a big change, but, ultimately, a safe one for Microsoft. While releasing something along the lines of Active Directory for Linux could affect the Windows Server bottom line, making PowerShell cross-platform didn't.
Building a PowerShell bridge between environments might help make the language a staple of the data center across many platforms. With plug-ins from a variety of third-party platforms, including big vendors such as VMware, this has established PowerShell as the ideal language going forward. So, even if you were not using Hyper-V, you could still use PowerShell for VMware.
Where does Microsoft go from here? Bringing more features and extending the cross-platform capabilities will be a help, but the team should think about ways to make it easier to get the traditional Windows admin using PowerShell Core. In my experience, a lot of admins tend to modify code, not write it from scratch, so the ability to generate code from a wizard was a welcome addition. It might help if the PowerShell developers put together a visual modeling tool to stitch together snips of code for a larger view of a longer automation routine.
It might seem odd to use a graphical interface for something that runs on a command line, but it's hard for the longtime Windows admin to hand over their GUI management in exchange for code, no matter how powerful it may be.
The Linux side lags too far behind
Richard Siddaway: PowerShell has become the standard automation tool for Windows administrators since its introduction. The announcement of PowerShell Core in 2016 brought with it a lot of uncertainty.
When compared to Windows PowerShell 5.1, the initial version of PowerShell Core, 6.0.0, had a number of functionality gaps. PowerShell Core had no workflows. It was missing cmdlets, such as the WMI cmdlets. Many of the Windows PowerShell modules, such as Active Directory, would not work with PowerShell Core.
Since the initial PowerShell Core 6.0.0 release, the PowerShell project team addressed many of these points:
- Foreach-Object has a parallel parameter to provide some, if not most, of the functionality delivered by PowerShell workflows.
- The PowerShell team reinstated missing cmdlets where applicable. For instance, the WMI cmdlets aren't available in PowerShell Core, but they have been effectively deprecated in Windows PowerShell in favor of the Common Information Model cmdlets.
- Most of the Windows PowerShell modules have been recompiled to work under PowerShell Core and Windows PowerShell. You can use the Windows Compatibility module to enable most of the rest of the modules to work with PowerShell Core. Some gaps remain, but they are shrinking.
There is little incentive for Windows administrators to embrace PowerShell Core because Windows PowerShell 5.1 does what most administrators need. Recent announcements from the PowerShell team indicate that PowerShell Core 7.x will ship alongside Windows PowerShell 5.1. This may actually reduce adoption on the new PowerShell version as many administrators will stick with what they know.
Take up of PowerShell Core on Linux has been much more enthusiastic than on Windows. Ironically, this may hinder further adoption on the Windows side if PowerShell Core is seen as too Unix-centered. The main issue with PowerShell on Linux, especially for Windows users, is there just isn't the breadth of cmdlets to match Windows.
To become a cross-platform management tool, the Linux side of PowerShell Core needs more cmdlets for systems management to match the level in Windows. A base install of Windows 10 comes with about 1,500 cmdlets while the PowerShell Core for Linux has about 350 cmdlets. At a minimum, administrators need cmdlets to manage network cards, IP addresses, storage, DNS clients, and task and job scheduling. The administrator should be able to issue the same command against any platform and get the desired results in a compatible format.
PowerShell as an open source project ensures future development, but it also comes with the risk that Microsoft could stop supporting it. The other issue is that many of the recent changes are best described as tweaks to address edge cases. There doesn't seem to be an overall roadmap. The PowerShell team's blog post regarding the PowerShell 7 roadmap -- they plan to drop the "Core" part of the name with the GA release -- is a bit of a misnomer because there is no indication of where PowerShell is going and what it's trying to be. The team should resolve these issues to make it clear what the future of PowerShell will be.