Private/Assert-OSDStageRepositorySelection.ps1

function Assert-OSDStageRepositorySelection {
    [CmdletBinding()]
    param([Parameter(Mandatory)][string[]]$Name)

    foreach($app in $Name){
        if($app -notmatch '^[A-Za-z0-9][A-Za-z0-9._-]*$' -or $app -match '\.\.'){
            throw "Invalid repository app Id '$app'."
        }
        if($app -ieq 'WindowsInboxCleanup'){throw "'WindowsInboxCleanup' is a built-in script. Use Add-OSDStageWindowsInboxCleanup instead."}
        if($app -ieq 'Microsoft365Apps'){throw "'Microsoft365Apps' is a built-in app. Use Add-OSDStageMicrosoft365Apps instead."}
        if($app -ieq 'MicrosoftTeams' -or $app -ieq 'Teams'){throw "'MicrosoftTeams' is a built-in app. Use Add-OSDStageMicrosoftTeams instead."}
        if($app -ieq 'AdobeAcrobatUnified'){throw "'AdobeAcrobatUnified' is a built-in app. Use Add-OSDStageAdobeAcrobatUnified instead."}
        if($app -ieq 'GoogleChromeEnterprise'){throw "'GoogleChromeEnterprise' is a built-in app. Use Add-OSDStageGoogleChromeEnterprise instead."}
        if($app -ieq 'MozillaFirefoxEnterprise'){throw "'MozillaFirefoxEnterprise' is a built-in app. Use Add-OSDStageMozillaFirefoxEnterprise instead."}
        if($app -ieq 'CiscoWebex'){throw "'CiscoWebex' is a built-in app. Use Add-OSDStageCiscoWebex instead."}
        if($app -in @('VisualCRedist','DotNetRuntime')){
            $command = if ($app -eq 'VisualCRedist') { 'Add-OSDStageVisualCRedist' } else { 'Add-OSDStageDotNetRuntime' }
            throw "'$app' is a built-in runtime. Use $command instead."
        }
        if($app -ieq 'VisualStudioCode'){throw "'VisualStudioCode' is a built-in app. Use Add-OSDStageVisualStudioCode instead."}
        if($app -ieq '7Zip'){throw "'7Zip' is a built-in app. Use Add-OSDStage7Zip instead."}
        if($app -ieq 'ZoomWorkplace'){throw "'ZoomWorkplace' is a built-in app. Use Add-OSDStageZoomWorkplace instead."}
    }
}