【发布时间】:2015-01-14 08:49:57
【问题描述】:
这个问题是关于传递开关参数的。让我们看看代码。我有这个 PowerShell 3.0 功能:
#test1.ps1
param(
[switch] $param1 = $false
)
Write-Host "param1: $($param1.IsPresent)"
Write-Host
我有这个主要的 PowerShell 函数,它以四种不同的方式调用 test.ps1:
#Test0.ps1
cls
$param1 = $True
# 1
.\test1.ps1 -param1
# 2
.\test1.ps1 -param1:$true
# 3
$potato = "-param1:`$$($param1)"
Write-Host "Parameter value: $potato"
.\test1.ps1 $potato
# 4
$command = ".\test1.ps1 -param1:`$$($param1)"
Write-Host "Command: $command"
iex $command
exit
为什么第 3 种方法会失败?我知道我可以用第 4 种方法,但我很想了解为什么第 3 种方法会失败。
这是输出。结果所有参数都应该是 True 但第三个是 False...
param1: True
param1: True
Parameter value: -param1:$True
param1: False
Command: .\test1.ps1 -param1:$True
param1: True
【问题讨论】:
标签: powershell parameters powershell-3.0