class MyScript : System.Management.Automation.IValidateSetValuesGenerator { static [string[]] _GetValidValues([string]$wordToComplete,[bool]$Strict) { $local:possibleValues = $( Get-ChildItem $global:MyPSScriptRoot -Filter '*.ps1' -Recurse | Select-Object -ExpandProperty FullName | ForEach-Object { $_ -replace '\.ps1$','' -replace "$($MyPSScriptRoot -replace '\\',"\\")[/\\]",'' } ) return $(Get-PossibleArguments -WordToComplete $wordToComplete -FullValueSet $possibleValues -Strict:$Strict ); } [String[]] GetValidValues() { return [MyScript]::_GetValidValues('',$true) } }