How to troubleshoot Azure Resource Manager (ARM) template validation errors

Deploying Azure Resource Manager (ARM) templates with the Azure PowerShell command New-AzureRmResourceGroupDeployment can fail for a variety of reasons. One of the more confusing situations can occur when handling template validation errors (Code=InvalidTemplateDeployment). This is because sometimes additional context is missing from the Exception and you have to lookup more information into order to troubleshoot the issue. In this post we will take a closer look at this particular error and how to resolve it.

Continue reading

Book Review: Docker on Windows: From 101 to Production

Docker is a powerful container platform originally designed for Linux, but quickly became popular enough to receive native support on Windows. I first read Docker training material that took more of a Linux-first approach and loved what I saw. However my day-to-day work is still typically Microsoft/Azure stack so I was looking for a good book that takes on the nuances of working with Docker in a Windows or Azure environment.

I found Docker on Windows: From 101 to Production with Docker on Windows by Elton Stoneman to be really helpful for that purpose. This post is my quick review of the 1st edition.

Continue reading

Tips for writing your first compiled binary PowerShell modules

I recently completed work on a my first compiled binary PowerShell module– these are modules built with C#/.Net code instead of PowerShell code. A few module development basics like project setup, handling help files, and writing unit tests did take some work to figure out. In this article I provide some tips for how to handle these common scenarios to help you get started on new projects.

Continue reading

Quick Tip: Windows PowerShell execution policy handling for x64 and x86 processes

Windows PowerShell’s execution policy is well known feature that helps prevent users from accidentally running malicious scripts. I hit an interesting situation recently where Get-ExecutionPolicy showed that I was allowed to run scripts, but in practice I still couldn’t execute scripts from a .NET application’s hosted runspace. What was the problem? The execution policy settings differed across x64 and x86 processes. Since this problem isn’t covered in the official documentation I figured it deserved a quick write-up.

Continue reading