Announcing PowerShell is open sourced and is available on Linux
What is PowerShell?
PowerShell is an automation platform and scripting language for Windows and Windows Server that allows you to simplify the management of your systems. Unlike other text-based shells, PowerShell harnesses the power of the .NET Framework, providing rich objects and a massive set of built-in functionality for taking control of your Windows environments.
PowerShell Desired State Configuration (DSC)
PowerShell Desired State Configuration (DSC) is a platform for testing and ensuring the declarative state of a system. DSC allows you to scale complex deployments across environments, enables collaboration of management, and corrects for configuration drift.
Alpha version prebuilt packages of the open source version are available for CentOS, Ubuntu, and OS X, in addition, of course, to Windows. Additional platforms are promised in the future.
Announcing the release, Microsoft’s Jeffrey Snover described the impetus for the move: customers liked the use of PowerShell for management, remote control, and configuration but didn’t like that it was Windows-only. To address this concern, Microsoft first had to bring .NET, and then PowerShell itself, to Linux and other platforms. Snover says that PowerShell will be extended so that remote scripting can natively use ssh as its transport instead of Windows remoting.
Longer term, this move should mean that Windows’ and Azure’s management tools such as Operations Management Suite and Desired State Configuration will have much greater reach, allowing a common set of tools and skills to reach a far greater range of systems.
This is my opinion and somewhat educated speculation, but it seems to me that they want to make it so you can manage anything from anywhere. Maybe you’re a Unix person who has some Windows machines (either local or in Azure) that you need to manage. You can use PowerShell from Linux to do that. Maybe you’ve got some bash scripts at your company AND some PowerShell scripts. Use them both, interchangeably.
If you know PowerShell, you’ll be able to use those skills on Linux as well. If you manage a hybrid environment, PowerShell isn’t a replacement for bash but rather another tool in your toolkit. There are lots of shells (not just bash, zsh, but also ruby, python, etc) in the *nix world so PowerShell will be in excellent company.
Fast forward to today and Microsoft is announcing PowerShell on Linux powered by .NET Core and it’s all open source and hosted at http://GitHub.com/PowerShell/PowerShell.
The PowerShell team has always prided itself on being a very community focused team but this announcement takes it to the next level by making the source code available and by adopting an open source development model where we can enjoy a deeper connection with the community in RFCs, issues and accept contributions directly. We also needed to extend our community since open source, like so many things, takes a village and that village is key to a great experience! We are partnering with third party companies – Chef, Amazon Web Services, VMware, and Google to name a few – to create a rich, seamless experience across the platforms you know and use.
As we port PowerShell to Linux, we are making sure that we are a first class citizen on that platform. We fit in well with the architecture, idioms and existing tools. This was pretty easy as most of the original PowerShell team had deep Unix backgrounds and that shows in our design. There were a number of little changes that we made and two big things:
- We created a PowerShell Editor Service. This allow users to choose from a range of editors (VS Code and Sublime with others to follow) and get a great PowerShell authoring experience with Intellisense, debugging, etc.
- We will be extending the PowerShell Remoting Protocol (MS-PSRP) to use OpenSSH as a native transport. Users will have the option to use SSH or WINRM as a transport.
The initial release is an “alpha” and is community supported. In the future, we will deliver an official Microsoft released version of PowerShell based on open source to anyone running a supported version of Windows or *nix. The timing of the official Microsoft version will be based upon community input and business needs. We hope all of you will help us get it right!
The journey to opening up PowerShell
If you are new to PowerShell, a great way to start learning is with our Learning PowerShell repository on GitHub. We also offer a free Microsoft Virtual Academy online course: Getting Started with PowerShell 3.0 Jump Start. You’ll want to join/participate in the PowerShell Community at powershell.org/ and follow thePowerShell Team blog. We’ll be updating these to meet the needs of the Linux community (e.g. examples) in the near future.
Be sure to check out the coverage from around the web and lots of blog posts from different perspectives!
- PowerShell Team Blog
- PowerShell Webinar
- PowerShell Team YouTube official channel
- GitHub PowerShell Project
- .NET Core Project
Have fun! This open source thing is kind of catching on at Microsoft isn’t it?