Chapters/dynamic-parameters/example.ps1

Param(
    [string]$UserLevel,
    
    DynamicParam {
        If ($UserLevel -eq "Administrator") {
            # create an $AdminType parameter
            $attr = New-Object System.Management.Automation.ParameterAttribute
            $attr.HelpMessage = "Enter admin type"
            $attr.Mandatory = $true
            $attr.ValueFromPipelineByPropertyName = $true
            $attrColl = New-Object System.Collections.ObjectModel.Collection[System.Attribute]
            $attrColl.Add($attr)
            $param = New-Object System.Management.Automation.RuntimeDefinedParameter('AdminType',[string],$attrColl)
            $dict = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary
            $dict.Add('AdminType',$param)
            return $dict
        }
    }