Utils/New-DynamicParam.ps1
function New-DynamicParam { <# .SYNOPSIS A PowerShell script to enable dynamic parameters. Author: Roberto Rodriguez (@Cyb3rWard0g) License: MIT Required Dependencies: None Optional Dependencies: None #> [CmdletBinding()] [OutputType('System.Management.Automation.RuntimeDefinedParameter')] param ( [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string]$Name, [Parameter(Mandatory=$false)] [array]$ValidateSetOptions, [Parameter()] [switch]$Mandatory = $false, [Parameter()] [switch]$ValueFromPipeline = $false, [Parameter()] [switch]$ValueFromPipelineByPropertyName = $false ) $Attrib = New-Object System.Management.Automation.ParameterAttribute $Attrib.Mandatory = $Mandatory.IsPresent $Attrib.ValueFromPipeline = $ValueFromPipeline.IsPresent $Attrib.ValueFromPipelineByPropertyName = $ValueFromPipelineByPropertyName.IsPresent # Create AttributeCollection object for the attribute $Collection = new-object System.Collections.ObjectModel.Collection[System.Attribute] # Add our custom attribute $Collection.Add($Attrib) # Add Validate Set if ($ValidateSetOptions) { $ValidateSet= new-object System.Management.Automation.ValidateSetAttribute($Param.ValidateSetOptions) $Collection.Add($ValidateSet) } # Create Runtime Parameter $DynParam = New-Object System.Management.Automation.RuntimeDefinedParameter($Param.Name, [string], $Collection) $DynParam } |