我有2个Powershell脚本script1.ps1
和script2.ps1
。它们都包含相同的参数标志和整数参数[int]$num, [switch]$silent = $false
。
现在,我使用参数script.ps1
调用script.ps1 222 -silent
。我想使用该标志和另一个整数参数从script2.ps1
调用script1.ps1
。但是我发现的唯一决定是
param([int]$num, [switch]$silent = $false)
if($silent) {
.\script2.ps1 333 -silent
} else {
.\script2.ps1 333
}
是否有更简便的方法将参数标志从一个脚本发送到另一个脚本?
答案 0 :(得分:2)
开关参数接受布尔值,因此您可以执行以下操作:
Param(
[int]$num,
[Switch]$silent = $false
)
.\script2.ps1 333 -silent:$silent.IsPresent
请注意,这并不完全像passthru。在这种情况下,第二个脚本将始终通过参数-silent
传递,只是具有显式值$true
或$ false。
如果您不希望在未调用第一个脚本时不传递参数,那么您实际上无法进行区分。在这种情况下,您需要这样的东西:
Param(
[int]$num,
[Switch]$silent = $false
)
$extraParams = @{}
if ($PSBoundParameters.ContainsKey('silent')) {
$extraParams['silent'] = $silent.IsPresent
}
.\script2.ps1 333 @extraParams