internal/functions/Get-AzOpsResource.ps1
function Get-AzOpsResource { <# .SYNOPSIS Check if the Azure resource exists. .DESCRIPTION Check if the Azure resource exists. .PARAMETER ScopeObject The Resource to check. .EXAMPLE > Get-AzOpsResource -ScopeObject $ScopeObject #> [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [AzOpsScope] $ScopeObject, [string] $DeploymentStackName ) process { Set-AzOpsContext -ScopeObject $ScopeObject if ($DeploymentStackName -and $ScopeObject.Resource -ne 'deploymentStacks') { $ScopeObject.Resource = 'deploymentStacks' } try { switch ($ScopeObject.Resource) { # Check if the resource exist 'locks' { $resource = Get-AzResourceLock -Scope "/subscriptions/$($ScopeObject.Subscription)" -ErrorAction SilentlyContinue | Where-Object { $_.ResourceID -eq $ScopeObject.Scope } } 'policyAssignments' { $resource = Get-AzPolicyAssignment -Id $scopeObject.Scope -ErrorAction SilentlyContinue } 'policyDefinitions' { $resource = Get-AzPolicyDefinition -Id $scopeObject.Scope -ErrorAction SilentlyContinue } 'policyExemptions' { $resource = Get-AzPolicyExemption -Id $scopeObject.Scope -ErrorAction SilentlyContinue } 'policySetDefinitions' { $resource = Get-AzPolicySetDefinition -Id $scopeObject.Scope -ErrorAction SilentlyContinue } 'roleAssignments' { $resource = Invoke-AzRestMethod -Path "$($scopeObject.Scope)?api-version=2022-04-01" | Where-Object { $_.StatusCode -eq 200 } } 'resourceGroups' { $resource = Get-AzResourceGroup -Id $scopeObject.Scope -ErrorAction SilentlyContinue } 'deploymentStacks' { if ($ScopeObject.ResourceGroup) { if ($DeploymentStackName) { $resource = Get-AzResourceGroupDeploymentStack -Name $DeploymentStackName -ResourceGroupName $ScopeObject.ResourceGroup -ErrorAction SilentlyContinue } else { $resource = Get-AzResourceGroupDeploymentStack -ResourceId $ScopeObject.Scope -ErrorAction SilentlyContinue } } elseif ($ScopeObject.Subscription) { if ($DeploymentStackName) { $resource = Get-AzSubscriptionDeploymentStack -Name $DeploymentStackName -ErrorAction SilentlyContinue } else { $resource = Get-AzSubscriptionDeploymentStack -ResourceId $ScopeObject.Scope -ErrorAction SilentlyContinue } } elseif ($ScopeObject.ManagementGroup) { if ($DeploymentStackName) { $resource = Get-AzManagementGroupDeploymentStack -Name $DeploymentStackName -ManagementGroupId $ScopeObject.ManagementGroup -ErrorAction SilentlyContinue } else { $resource = Get-AzManagementGroupDeploymentStack -ResourceId $ScopeObject.Scope -ErrorAction SilentlyContinue } } } default { $resource = Get-AzResource -ResourceId $ScopeObject.Scope -ErrorAction SilentlyContinue } } } catch { Write-AzOpsMessage -LogLevel InternalComment -LogString 'Get-AzOpsResource.Failed' -LogStringValues $_ return } if ($resource) { return $resource } } } |