This repo contains the example code for the PowerShell Dynamic Parameter blog posts. All of these run on PowerShell v5 on Windows and PowerShell v6 (Core) on Windows and Linux.
In Part 1 I show how to use the DynamicParam
keyword of PowerShell.
In Part 2 I show how to use Register-ArgumentCompleter
to add tab completion values to your own or anyone else's commands.
This folder contains the progression of a Get-Animal
function discussed Part 1. It uses a dynamic [ValidateSet]
to allow tab completion, and restriction of values on-the-fly.
Import-Module .\Get-Animals.psm1
will import all the examples for you to run, or you can dot-source any file.
Invoke-Pester
will run test to test the valid values for the sets.
This folder has example code to do dynamic tab completion for a set of functions that use metadata from SQL Server, as discussed in Part 2. These depend on the PowerShell SQLServer module and the Pester tests require the Northwind database
Import-Module .\RegisterArgumentCompleter.psm1
will import all the SQL Server examples. Invoke-Pester
will run some tests to make sure SQL Server returns values from the Northwind database
On WSL (Windows Subsystem for Linux) or non-Windows, make sure TCP is enabled for SQL Server. In those cases you'll probably also have to call Set-SQLCredential
to set the credentials for the tab completion. Running on WSL using a local SQL Server I used these commands
ipmo ./RegisterArgumentCompleter.psm1
Set-SQLCredential -Username sa -Password .....
Invoke-Pester
Localhost is the default server/instance for all queries, but you can override with a -ServerInstance
parameter.
Get-SQLTable -ServerInstance .\sqlexpress
. .\RegisterOtherArgumentCompleters.ps1
will register tab completion on built in commands: a function (Get-InstalledModule
), cmdlet (Get-Host
), and native command (git.exe
). This works on Windows and Linux.