diff --git a/README.md b/README.md index be437c8..01b34d4 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,26 @@ # DynamicParams -A PowerShell module that makes it easier to use dynamic params. - -## Prerequisites - -No prerequisites are required to use this module. +DynamicParams is a PowerShell module that makes it easier to build dynamic parameters. It provides helper +commands to define individual dynamic parameters and to collect them into the dictionary that a function's +`dynamicparam` block returns, removing much of the boilerplate normally involved. ## Installation -Provide step-by-step instructions on how to install the module, including any InstallModule commands or manual installation steps. +Install the module from the PowerShell Gallery: ```powershell -Install-Module -Name DynamicParams +Install-PSResource -Name DynamicParams Import-Module -Name DynamicParams ``` ## Usage -Here is a list of example that are typical use cases for the module. -This section should provide a good overview of the module's capabilities. - -### Use dynamic parameters in a function +Use `New-DynamicParam` to define individual dynamic parameters and `New-DynamicParamDictionary` to build the +dictionary returned from a function's `dynamicparam` block. -Here is an example of how to use dynamic parameters in a function. +### Example: Add dynamic parameters to a function ```powershell -#Requires -Modules DynamicParams - function Get-Info { [CmdletBinding()] param () @@ -55,24 +49,18 @@ function Get-Info { return $DynamicParamDictionary } - ... process { $process = $PSBoundParameters['Process'] $service = $PSBoundParameters['Service'] - ... } - ... } - ``` -### Use dynamic parameters in a function - DSL Style +### Example: Define parameters with the DSL style -Here is an example of how to use dynamic parameters in a function. +`DynamicParams` is a convenience DSL alias that wraps `New-DynamicParam` and `New-DynamicParamDictionary`: ```powershell -#Requires -Modules DynamicParams - function Get-Info { [CmdletBinding()] param () @@ -80,38 +68,30 @@ function Get-Info { dynamicparam { DynamicParams @( @{ - Name = 'Process' - Alias = 'proc' - Type = [string] - ValidateSet = Get-Process | Select-Object -ExpandProperty Name -Unique + Name = 'Process' + Alias = 'proc' + Type = [string] + ValidateSet = Get-Process | Select-Object -ExpandProperty Name -Unique } @{ - Name = 'Service' - Alias = 'svc' - Type = [string] - ValidateSet = Get-Service | Select-Object -ExpandProperty Name -Unique + Name = 'Service' + Alias = 'svc' + Type = [string] + ValidateSet = Get-Service | Select-Object -ExpandProperty Name -Unique } ) } - ... process { $process = $PSBoundParameters['Process'] $service = $PSBoundParameters['Service'] - ... } - ... } - ``` -### Use dynamic parameters in a function - Pipeline style - -Here is an example of how to use dynamic parameters in a function. +### Example: Build parameters from a pipeline ```powershell -#Requires -Modules DynamicParams - function Get-Info { [CmdletBinding()] param () @@ -133,33 +113,24 @@ function Get-Info { $params | ForEach-Object { New-DynamicParam @_ } | New-DynamicParamDictionary } - ... process { - $process = $PSBoundParameters['Process'] - $service = $PSBoundParameters['Service'] - ... + $variable = $PSBoundParameters['Variable'] + $environmentVariable = $PSBoundParameters['EnvironmentVariable'] } - ... } - ``` +## Documentation -## Contributing - -Coder or not, you can contribute to the project! We welcome all contributions. +Documentation is published at [psmodule.io/DynamicParams](https://psmodule.io/DynamicParams/). -### For Users +Use PowerShell help and command discovery for module details: -If you don't code, you still sit on valuable information that can make this project even better. If you experience that the -product does unexpected things, throw errors or is missing functionality, you can help by submitting bugs and feature requests. -Please see the issues tab on this project and submit a new issue that matches your needs. - -### For Developers - -If you do code, we'd love to have your contributions. Please read the [Contribution guidelines](CONTRIBUTING.md) for more information. -You can either help by picking up an existing issue or submit a new one if you have an idea for a new feature or improvement. +```powershell +Get-Command -Module DynamicParams +Get-Help New-DynamicParam -Examples +``` ## Links -- [about_Functions_Advanced_Parameters | Microsoft Learn](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_functions_advanced_parameters?view=powershell-7.4#dynamic-parameters) +- [about_Functions_Advanced_Parameters | Microsoft Learn](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_functions_advanced_parameters#dynamic-parameters)