Search code examples
powershellparameter-passingvalidateset

Powershell multiple function params from ValidateSet


I'm writing a script with PowerShell and at some point I needed to use ValidateSet on function params. It's a very good feature, but what I need is something more than that.

For example

Function JustAnExample
{
    param(
        [Parameter(Mandatory=$false)][ValidateSet("IPAddress","Timezone","Cluster")]
        [String]$Fields
    )

    write-host $Fields
}

So this code snippet allows me to choose one item from the list like that
JustAnExample -Fields IPAddress

and then prints it to the screen. I wonder if there is a possibility to allow to choose multiple values and pass them to function from one Validation set like so

JustAnExample -Fields IPAddress Cluster

Maybe there is a library for that or maybe I just missed something but I really can't find a solution for this.


Solution

  • If you want to pass multiple string arguments to the -Fields parameter, change it to an array type ([String[]]):

    param(
        [Parameter(Mandatory=$false)]
        [ValidateSet("IPAddress","Timezone","Cluster")]
        [String[]]$Fields
    )
    

    And separate the arguments with , instead of space:

    JustAnExample -Fields IPAddress,Cluster