Как передать параметр переключателя в другой PowerShell script?

У меня есть два сценария PowerShell, которые имеют параметры переключения:

компиляции tool1.ps1:

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

Write-Host "VHDL-2008 is enabled: $VHDL2008"

compile.ps1:

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

if (-not $VHDL2008)
{ compile-tool1.ps1            }
else
{ compile-tool1.ps1 -VHDL2008  }

Как передать параметр переключателя другому PowerShell script, не записывая большие выражения if..then..else или case?

Я не хочу преобразовывать параметр $VHDL2008 из compile-tool1.ps1 в тип bool, потому что оба сценария - это интерфейсные скрипты (используемые пользователями). Последний является высокоуровневой оболочкой для нескольких сценариев compile-tool*.ps1.

Ответ 1

Вы можете указать $true или $false на коммутаторе с использованием синтаксиса двоеточия:

compile-tool1.ps1 -VHDL2008:$true
compile-tool1.ps1 -VHDL2008:$false

Итак, просто передайте фактическое значение:

compile-tool1.ps1 -VHDL2008:$VHDL2008

Ответ 2

Try

compile-tool1.ps1 -VHDL2008:$VHDL2008.IsPresent