Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 29 additions & 58 deletions README.md
Original file line number Diff line number Diff line change
@@ -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
Comment thread
MariusStorhaug marked this conversation as resolved.
```
Comment thread
MariusStorhaug marked this conversation as resolved.
Comment thread
MariusStorhaug marked this conversation as resolved.

## 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 ()
Expand Down Expand Up @@ -55,63 +49,49 @@ 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 ()

dynamicparam {
DynamicParams @(
Comment thread
MariusStorhaug marked this conversation as resolved.
@{
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 ()
Expand All @@ -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
```
Comment thread
MariusStorhaug marked this conversation as resolved.

## 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)
Loading