Private/Utils/Normalize-PolicyName.ps1
|
function Normalize-PolicyName { <# .SYNOPSIS Normalize policy name for consistent matching. .DESCRIPTION Removes versioning suffixes, preview/deprecated tags, and standardizes formatting to enable reliable policy name comparison across different sources. .PARAMETER Name The policy name to normalize. .EXAMPLE Normalize-PolicyName "Deploy VM Backup [Preview] v2.1.0" Returns: "deploy vm backup" .OUTPUTS String - Normalized lowercase policy name #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$Name ) if ([string]::IsNullOrWhiteSpace($Name)) { return "" } $n = $Name.Trim() # Remove common suffixes $n = $n -replace '\s*\[Preview\]\s*$', '' $n = $n -replace '\s*\(Deprecated\)\s*$', '' $n = $n -replace '\s*\(Preview\)\s*$', '' $n = $n -replace '\s*\(.*?version.*?\)\s*$', '' $n = $n -replace '\s*\bv?\d+(\.\d+)*\s*$', '' # Standardize dashes and spacing $n = $n -replace '[–—−]', '-' $n = $n -replace '\s*-\s*', ' - ' $n = $n -replace '\s+', ' ' return $n.ToLowerInvariant() } |