在PowerShell中将标志从一个脚本移动到另一个脚本
我有两个powershell脚本在PowerShell中将标志从一个脚本移动到另一个脚本,powershell,Powershell,我有两个powershell脚本script1.ps1和script2.ps1。它们都包含相同的参数标志和整数参数[int]$num,[switch]$silent=$false 现在我使用参数script.ps1 222-silent调用script.ps1。我想使用该标志和另一个整数参数从script1.ps1调用script2.ps1。但我唯一的决定是 param([int]$num, [switch]$silent = $false) if($silent) { .\scrip
script1.ps1
和script2.ps1
。它们都包含相同的参数标志和整数参数[int]$num,[switch]$silent=$false
现在我使用参数script.ps1 222-silent
调用script.ps1
。我想使用该标志和另一个整数参数从script1.ps1
调用script2.ps1
。但我唯一的决定是
param([int]$num, [switch]$silent = $false)
if($silent) {
.\script2.ps1 333 -silent
} else {
.\script2.ps1 333
}
是否有更简单方便的方法将参数标志从一个脚本发送到另一个脚本?开关参数接受布尔值,因此您可以执行以下操作:
Param(
[int]$num,
[Switch]$silent = $false
)
.\script2.ps1 333 -silent:$silent.IsPresent
Param(
[int]$num,
[Switch]$silent = $false
)
$extraParams = @{}
if ($PSBoundParameters.ContainsKey('silent')) {
$extraParams['silent'] = $silent.IsPresent
}
.\script2.ps1 333 @extraParams
请注意,这与passthru的行为并不完全相同。在这种情况下,第二个脚本将始终传递参数-silent
,只是显式值为$true
或`$false
如果您不想在第一个脚本未被调用时传递该参数,那么您就无法真正进行区分。在这种情况下,您需要以下内容:
Param(
[int]$num,
[Switch]$silent = $false
)
.\script2.ps1 333 -silent:$silent.IsPresent
Param(
[int]$num,
[Switch]$silent = $false
)
$extraParams = @{}
if ($PSBoundParameters.ContainsKey('silent')) {
$extraParams['silent'] = $silent.IsPresent
}
.\script2.ps1 333 @extraParams
开关参数接受布尔值,因此可以执行以下操作:
Param(
[int]$num,
[Switch]$silent = $false
)
.\script2.ps1 333 -silent:$silent.IsPresent
Param(
[int]$num,
[Switch]$silent = $false
)
$extraParams = @{}
if ($PSBoundParameters.ContainsKey('silent')) {
$extraParams['silent'] = $silent.IsPresent
}
.\script2.ps1 333 @extraParams
请注意,这与passthru的行为并不完全相同。在这种情况下,第二个脚本将始终传递参数-silent
,只是显式值为$true
或`$false
如果您不想在第一个脚本未被调用时传递该参数,那么您就无法真正进行区分。在这种情况下,您需要以下内容:
Param(
[int]$num,
[Switch]$silent = $false
)
.\script2.ps1 333 -silent:$silent.IsPresent
Param(
[int]$num,
[Switch]$silent = $false
)
$extraParams = @{}
if ($PSBoundParameters.ContainsKey('silent')) {
$extraParams['silent'] = $silent.IsPresent
}
.\script2.ps1 333 @extraParams