Parameters
Parameters for PowerShell Universal jobs.
Jobs support automatically generating forms with parameters based on your script's
param
block. The type of control will change based on the type you define in the block. Parameters that are mandatory will also be required by the UI.Parameters can be simply defined without any type of parameter attribute and they will show up as text boxes in the UI.
param($Test)
$Test

Universal supports various types of parameters. You can use String, String[], Int, DateTime, Boolean, Switch and Enum types.
You can define string parameters by specifying the
[String]
type of by not specifying a type at all. Strings will generate a textbox.param(
[String]$Textbox,
$Textbox2
)

You can specify string arrays by using the
[String[]]
type specifier. String arrays will generate a multi-tag select box.param([String[]]$Array)

You can use the
[DateTime]
type specifier to create a date and time selector.param([DateTime]$DateTime)

You can use a
[Bool]
type selector to create a switch.param([Bool]$Switch)

You can define a number selector by using the
[Int]
type specifier.param([Int]$Number)

You can define a switch parameter using the
[Switch]
type specifier to create a switch.param([Switch]$Switch)

You can use System.Enum values to create select boxes. For example, you could use the
System.DayOrWeek
to create a day of the week selection box.param([System.DayOfWeek]$DayOfWeek)

When you specify a
PSCredential
, the user will be presented with a drop down of credentials available as variables. param(
[PSCredential]$Credential
)

You can allow users to upload files by using the
[File]
type. param(
[File]$File
)
Files will be available as a
PSUFile
object in your scripts. This object has a byte[]
array that you can use to process the file. For example, you can get the string content for the file by converting it using the Encoding classes.
[Text.Encoding]::UTF8.GetString($File.Content)
You can use the
DisplayNameAtrribute
to set a display name for the script parameter. param(
[ComponentModel.DisplayName("My Script")]
$MyScript
)

You can define help messages for your parameters by using the
HelpMessage
property of the Parameter
attribute.param(
[Parameter(HelpMessage = "Class you want to enroll in")]
[string]$Class
)

You can use the Parameter attribute to define required parameters.
param(
[Parameter(Mandatory)]
$RequiredParameter
)
$RequiredParameter

You can use both static and default values for parameters. The default value is calculated when the job is about to be run.
param(
$Parameter = "Hello, World",
[DateTime]$ExecutionTime = Get-Date
)
$Parameter
$ExecutionTime
You can pass parameters from PowerShell using the
Invoke-PSUScript
cmdlet. This cmdlet supports dynamic parameters. If you have a param
block on your script, these parameters will automatically be added to Invoke-PSUScript
.For example, I had a script named Script1.ps1 and the contents were are follows.
param($MyParameter)
$MyParameter
I could then invoke that script using this syntax.
Invoke-PSUScript -Name 'Script.ps1' -MyParameter "Hello"
The result would be that Hello was output in the job log and pipeline.
PowerShell Universal supports parameter sets. When a parameter set is defined, a drop down is provided that allows for switching between the sets.
param(
[Parameter(ParameterSetName = 'Set1')]
$Parameter1,
[Parameter(ParameterSetName = 'Set2')]
$Parameter2
)

Parameter Sets
Last modified 5mo ago