everythingpossible - Fotolia
Understanding the three main goals of PowerShell Core 6
The book 'Learn PowerShell Core 6.0' offers a closer look into the history of PowerShell and its evolution into the PowerShell Core open source project.
PowerShell is a critical tool for many administrators who manage Windows, but the goals of PowerShell Core 6 and its shift to open source might be a mystery to some in IT.
The book Learn PowerShell Core 6.0 by David das Neves and Jan-Hendrik Peters can help beginner PowerShell users with step-by-step guides to get started with the scripting language and management tool on Windows, Linux and Mac platforms, as well as Cloud Shell in Azure.
In addition to its technical content, the book covers the history of PowerShell -- Jeffrey Snover's Monad Manifesto in 2002 introduced the main concepts of the automation tool -- and why Microsoft decided to open up its development and make it available on other operating systems.
The book explains that while Windows PowerShell made task automation easier for administrators, it vexed the PowerShell team. Tedious, manual legacy controls, a lack of organized reviews and a frustrating feedback process pushed Microsoft to overhaul the development process, which steered the company to make the switch to open source and publish the project on GitHub in 2016.
One of the goals of PowerShell Core 6, released for general availability in January 2018, is to build a more involved community around the tool and make it an integral component to automate processes beyond the Windows platform.
This excerpt from the book's first chapter describes the goals of PowerShell Core 6 and how this new direction can help further the vision detailed by Snover for a more powerful automation tool.
There have been three primary goals for PowerShell Core 6. When we examine each of these goals, it becomes clear how PowerShell Core came into being and why it is a great management tool for any infrastructure
- Ubiquity describes the platform-independency to work with PowerShell on Windows, Linux, and macOS operating systems. This is necessary because heterogeneous environments are today's norm, and they are important to developers and IT professionals.
- Cloud refers to the intention of being built for cloud scenarios, because IT is moving towards Azure, REST APIs (Swagger/OpenAPI), and other public clouds. For this, major improvements have been made to the Invoke-WebRequest, Invoke-RestMethod, and ConvertFrom-Json cmdlets. There is a collaboration with the Azure PowerShell team to support PowerShell Core. Third-party vendors, such as VMware and AWS, are also working to support PowerShell Core.
- Community refers to being open source, contributing directly to the product, and allowing the retrieval of customer feedback directly to the engineering team. The current Request for Comments (RFCs) -- asking for feedback for the current roadmap/new features or breaking changes, milestones, projects, and issues -- should always be transparent and publicly available. This means that we have pull requests against code, tests, and documentation. In addition, issues from the community are dynamically reprioritized, which can also be discussed in the PowerShell Core Community Call. These calls are free to join for everybody, and you can just raise your voice and discuss your feedback directly with the engineers.
Editor's note: This excerpt is from Learn PowerShell Core 6.0, authored by David das Neves and Jan-Hendrik Peters and published by Packt Publishing.