internal/functions/Confirm-PolicyDefinitionUsedExists.ps1
function Confirm-PolicyDefinitionUsedExists { [CmdletBinding()] param( $Id = $null, $Name = $null, $PolicyDefinitionsScopes, [hashtable] $AllDefinitions, [switch] $SuppressErrorMessage ) # Are the parameters correct? if (!($null -eq $Id -xor $null -eq $Name)) { Write-Error "Confirm-PolicyDefinitionUsedExists called with a contradictory parameters: must supply either Policy id or Policy name." -ErrorAction Stop } # Find the Policy if ($null -ne $Id) { if ($AllDefinitions.ContainsKey($Id)) { return $Id } else { if (!$SuppressErrorMessage) { Write-Error " Policy '$Id' not found." } return $null } } else { foreach ($scopeId in $PolicyDefinitionsScopes) { $Id = "$scopeId/providers/Microsoft.Authorization/policyDefinitions/$Name" if ($AllDefinitions.ContainsKey($Id)) { return $Id } } # Not found in custom Policies, try built-in Policies if (!$SuppressErrorMessage) { Write-Error " Policy name '$Name' not found in custom or built-in Policies." } return $null } } |