class MyScript { #: System.Management.Automation.IValidateSetValuesGenerator { static [string[]] _GetValidValues([string]$wordToComplete,[bool]$CurrentOnly,[bool]$Strict) { $local:possibleValues = $( Get-MyPackages -ReturnFullPath -IncludeRoot -Force:$(-not $CurrentOnly) | Get-ChildItem -Filter '*.ps1' | 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('',$false,$true) } }