Normally, if you want to defer the specification of a switch parameter to some variable, you can pass an expression to the switch parameter, as seen with the WhatIf parameter.
This behaviour has been filed as a bug on connect. This is a workaround:
powershell ./test.ps1 -source test.ps1 -dest test.copy.ps1 -test:$true
Use the IsPresent property of the switch. Example:
function test-switch{
param([switch]$test)
function inner{
param([switch]$inner_test)
write-host $inner_test
}
inner -inner_test:$test.IsPresent
}
test-switch -test:$true
test-switch -test
test-switch -test:$false
True
True
False
BTW, I used functions rather than a script so it would be easier to test.