Auto Complete User Input PowerShell 2.0 Auto Complete User Input PowerShell 2.0 powershell powershell

Auto Complete User Input PowerShell 2.0


PowerShell tab completion can be extended to custom parameters and parameter values (in v3). However, this is a property of advanced functions. You can use the ValidateSetAttribute to do that.

Check the Technet help topic on advanced functions: http://technet.microsoft.com/en-us/library/hh847806.aspx

You can replace the tabexpansion (v2) and tabexpansion2 (v3) function in PowerShell to auto complete parameter values outside of advanced functions. You can get a basic definition of this in PowerShell v3 by running

 Get-Content function:TabExpansion2

Here is an example of showing custom tab expansion function.

http://www.powershellmagazine.com/2012/11/29/using-custom-argument-completers-in-powershell-3-0/

But, if you want to the user to be able to auto complete values for a Read-Host kind of input, you need to write a proxy for Read-Host to achieve that.

You can, optionally, look at PowerTab module at http://powertab.codeplex.com/


For folks who are looking for a way to do this and are fortunate enough to be using PS v3 (and my apologies for all those required to stay with V2):

The easiest way to achieve this is using the "ValidateSet" option in your input parameters.

function Show-Hello {param (    [ValidateSet("World", "Galaxy", "Universe")]    [String]$noun)$greetingString = "Hello, " + $noun + "!"Write-Host "`t=>`t" $greetingString "`t<=" }

ValidateSet throws an error if a user attempts to use any other input:

Show-Hello "Solar System"   Show-Hello : Cannot validate argument on parameter 'noun'. The argument `   "Solar System" does not belong to the set "World,Galaxy,Universe" specified `   by the ValidateSet attribute. Supply an argument that is in the set and `   then try the command again.

It also adds tab-completion to your function for that parameter. And if it is the FIRST parameter for your function, you don't even have to type in "-noun" for the tab-complete to make suggestions for its value.