Private/ConvertTo-IdleCapabilityList.ps1
|
Set-StrictMode -Version Latest function ConvertTo-IdleCapabilityList { [CmdletBinding()] param( [Parameter()] [AllowNull()] [object[]] $Capabilities, [Parameter()] [switch] $Validate, [Parameter()] [switch] $Normalize, [Parameter()] [switch] $Unique, [Parameter()] [switch] $Sort, [Parameter()] [AllowEmptyString()] [string] $ErrorPrefix = 'Capability' ) $items = @() foreach ($c in @($Capabilities)) { if ($null -eq $c) { continue } $s = ConvertTo-IdleCapabilityIdentifier -Value $c if ($null -eq $s) { continue } if ($Validate -and -not (Test-IdleCapabilityIdentifier -Capability $s)) { throw [System.ArgumentException]::new( "$ErrorPrefix '$s' is invalid. Expected dot-separated segments like 'IdLE.Identity.Read' or 'IdLE.Entitlement.Write'.", 'Capabilities' ) } if ($Normalize) { $s = ConvertTo-IdleNormalizedCapability -Capability $s } $items += $s } if ($Unique) { $items = @($items | Sort-Object -Unique) } if ($Sort) { $items = @($items | Sort-Object) } return @($items) } |