News

PowerShell Solutions Being Replaced with 'Desired State Configuration Core'

The Microsoft PowerShell team is planning to reshape its Desired State Configuration (DSC) solutions, replacing them with a single cross-platform tool that supports both Windows and Linux.

DSC is a PowerShell-based push/pull solution for keeping servers in an optimal condition by declaring the state in which they should be set. Microsoft currently has a couple of DSC versions. There is a Windows PowerShell DSC version and a DSC for Linux version, which are maintained by Microsoft in separate code bases. However, today the PowerShell team announced a different vision for the DSC tool, although it's still at the planning stage right now.

The team is planning to produce a new version called "DSC Core" that will eventually supplant the current Windows and Linux versions. DSC Core will follow the path set by Microsoft when it outlined its PowerShell Core plans back in July. PowerShell Core is a more basic version of the scripting language that will succeed Windows PowerShell 6.0, which never got out of the beta stage. PowerShell Core (also referred to as "PowerShell Core 6.0") is Microsoft's cross-platform scripting language, based on .NET Core, that's designed to work across Windows, Mac and Linux.

DSC Core Goals

Microsoft outlined similar cross-platform goals for DSC Core, listing the following planned characteristics:

No dependency on WMI

No dependency on WMF

Xcopy-able package

Supports resources written in native C/C++ (no WMI), Python and PowerShell

Runs on Windows and Linux

Required (includes in package) PowerShell Core and .NET Core

The plans include making DSC Core scalable across cloud platforms, while also "maintaining compatibility with Windows PowerShell Desired State Configuration," according to the announcement. However, that last goal is admittedly compromised since "existing cmdlets will not work with DSC Core." Instead, Microsoft plans to release "a new set of cmdlets" for DSC Core.

With this new approach, Microsoft also expects to release a new DSC Core-based extension for its Azure DSC Extensions capability. Organizations typically might use the Azure DSC Extension capability to keep an Azure virtual machine configuration in check.

Compatibility

Some things won't change with the new approach. Microsoft is promising that "all existing and new DSC resources that use supported .NET standard 2.0 commands will work with DSC Core."

Existing pull servers that use DSC "will be supported by DSC Core," Microsoft's announcement promised. In addition Azure Automation DSC, an Azure service that provides a DSC pull server for use with virtual machines or with Windows or Linux servers, "will be compatible with DSC Core." Azure Automation DSC is actually Microsoft's "recommended pull server solution for enterprise and cloud environments."

The announcement by the PowerShell team hedged a bit about pull server support, though, stating that "we are still working on what the future of this looks like."

Microsoft also offered a mixed message about configuration scripts. They're "fully supported" and don't need to be changed, but they'll have to be "compiled in PowerShell 6" (namely, PowerShell Core 2.0).

Deprecation

The new roadmap plans signaled an eventual winding-down phase ahead for Windows PowerShell DSC and DSC for Linux. Microsoft plans to support those versions with security updates, but new features will only get added to the DSC Core solution going forward.

At least one reader of Microsoft's announcement ("Zuldan") expressed fears about possible backward compatibility issues, stating that "DSC Core is going to cause a lot of disruption for our business if we are ever forced to move to it and backwards compatibility is not to scratch."

PowerShell is open source code, but Microsoft hasn't decided yet whether the new DSC Core tool will be open source code, according to a comment by Mark Gray, DSC program manager, in Microsoft's announcement.