August 11th, 2021

PSArm Experiment Update

At the end of March we released a preview of PSArm, an experimental PowerShell module to enable authoring Azure ARM templates at scale. The goal of the PSArm experiment was to meet PowerShell customers where they are and through that platform provide a native way to reuse the power and reproducibility of ARM templates, as well as serve as an exploration into PowerShell domain-specific languages (DSLs).

While there was excitement from the PowerShell community around PSArm, there was also confusion from some Azure customers around its fit in the Azure ecosystem. After the initial beta-1 release, our data showed few downloads from the PowerShell Gallery and minimal deployments of PSArm-generated ARM templates. Over the same time period, PowerShell users have expressed growing excitement around and adoption of Bicep.

In keeping with our goal of meeting our customers where they are, the PowerShell Team will be no longer investing in this experimental module and there will not be any further releases. Additionally, the PSArm repository will be archived, allowing customers to view the module, but not submit any PRs or issues. Instead, we are working with the Bicep team to refocus ARM-template-related investments on improving the Bicep/PowerShell integration experience, passing on any learnings to the Bicep team and consolidating users into a single experience.

Although it’s being discontinued, the PSArm experiment did give rise to a number of proofs of concept that we intend to reuse elsewhere, including new mechanisms for PowerShell DSL creation, schema definition and validation, syntax transformation, efficient on-the-fly contextual function definition, and context-aware IntelliSense. Additionally, we became early validators of new platforms produced by the Bicep team. As we continue to innovate, we will take these learnings forward to our next PowerShell efforts.

As we close down the PSArm experimental module, we look forward to your feedback and recommendations on how to better tailor the Bicep experience for PowerShell users. If you have any suggestions for PowerShell could work better with Bicep, please file an issue in the Bicep repository.

Thanks, The PowerShell team

1 comment

Discussion is closed. Login to edit/delete existing comments.

  • Justin Grote

    I want to be able to use PowerShell loops, variables, and constructs to build bicep templates, because the built in loops etc. are so unintuitive and restrictive. If a more templating-engine style approach occurred that helped generate bicep instead of the final resulting ARM, that’s a good value.

    Also around the deployment and life cycle of templates, continuing to improve that with deployment stacks, etc.