testcases/deploymentTemplate/Resources-Should-Have-Location.test.ps1

param(
[Parameter(Mandatory=$false,Position=0)] #not mandatory for case of an empty resource array
[PSObject]
$MainTemplateResources
)
foreach ($mtr in $MainTemplateResources) {
    foreach ($resource in @(@($mtr) + $mtr.ParentResources)) { 
        if ($resource.Location) {
            $location = "$($resource.location)".Trim()
            if ($location -notmatch '^\[.*\]$' -and $location -ne 'global') {
                Write-Error "Resource $($resource.Name) Location must be an expression or 'global'" -TargetObject $resource
            }
        }
    }
}