Parameters & Properties
To summarize the differences between passing parameters and properties to the
Invoke-psake function:
- Parameters and "properties" can both be passed to the Invoke-psake function simultaneously
- Parameters are set before any "properties" blocks are run
- Properties are set after all "properties" blocks have run
Parameters
You can pass parameters to your build script using the "parameters" parameter of the Invoke-psake function. The following is an example:
Invoke-psake .\parameters.ps1 -parameters @{"p1"="v1";"p2"="v2"}
The example above runs the build script called parameters.ps1 and passes in
parameters p1 and p2 with values v1 and v2. The parameter value for the
"parameters" parameter (say that 10 times really fast!) is a PowerShell
hashtable where the name and value of each parameter is specified.
You don't need to use the "$" character when specifying the parameter names in the hashtable.
properties {
$my_property = $p1 + $p2
}
task default -depends TestParams
task TestParams {
Assert ($my_property -ne $null) '$my_property should not be null'
}
The Assert in this example would pass because when it runs, $my_property
would be set to v1v2 and not be $null.
Properties
You can override a property in your build script using the properties
parameter of the Invoke-psake function. The following is an example:
Invoke-psake .\properties.ps1 -properties @{"x"="1";"y"="2"}
The example above runs the build script called properties.ps1 and passes in
parameters x and y with values 1 and 2. The parameter value for the
"properties" parameter is a PowerShell hashtable where the name and value of
each property is specified.
You don't need to use the "$" character when specifying the property names in the hashtable.
properties {
$x = $null
$y = $null
$z = $null
}
task default -depends TestProperties
task TestProperties {
Assert ($x -ne $null) "x should not be null"
Assert ($y -ne $null) "y should not be null"
Assert ($z -eq $null) "z should be null"
}
The value of $x should be 1 and $y should be 2 by the time the
TestProperties task is executed. The value of $z was not overridden so it
should still be $null.