如何将switch参数传递给另一个PowerShell脚本?

Pae*_*els 36 powershell parameter-passing

我有两个PowerShell脚本,它们有switch参数:

编译tool1.ps1:

[CmdletBinding()]
param(
  [switch]$VHDL2008
)

Write-Host "VHDL-2008 is enabled: $VHDL2008"
Run Code Online (Sandbox Code Playgroud)

compile.ps1:

[CmdletBinding()]
param(
  [switch]$VHDL2008
)

if (-not $VHDL2008)
{ compile-tool1.ps1            }
else
{ compile-tool1.ps1 -VHDL2008  }
Run Code Online (Sandbox Code Playgroud)

如何在不编写大型if..then..elsecase语句的情况下将switch参数传递给另一个PowerShell脚本?

我不想在参数转换$VHDL2008compile-tool1.ps1类型为bool,因为,这两个脚本是前端脚本(由用户使用).后者是多个compile-tool*.ps1脚本的高级包装器.

Mar*_*ndl 56

您可以使用冒号语法指定$true$false在交换机上:

compile-tool1.ps1 -VHDL2008:$true
compile-tool1.ps1 -VHDL2008:$false
Run Code Online (Sandbox Code Playgroud)

所以只需传递实际值:

compile-tool1.ps1 -VHDL2008:$VHDL2008
Run Code Online (Sandbox Code Playgroud)

  • 你错过了多年:-).我用2.0测试了它 (2认同)

小智 7

尝试

compile-tool1.ps1 -VHDL2008:$VHDL2008.IsPresent 
Run Code Online (Sandbox Code Playgroud)

  • 我用`-VHDL2008:$ false`或者没有`-VHDL2008`开关来测试这个,`$ VHDL2008.IsPresent`是`$ false`:)(当然``$ true` with`-VHDL2008`或`-VHDL2008:$ true`) (2认同)