web-dev-qa-db-fra.com

Comment passer un paramètre de commutateur à un autre script PowerShell?

J'ai deux scripts PowerShell, qui ont des paramètres de commutation:

compile-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  }

Comment puis-je passer un paramètre de commutateur à un autre script PowerShell, sans écrire gros if..then..else ou case instructions?

Je ne veux pas convertir le paramètre $VHDL2008 de compile-tool1.ps1 pour taper bool, car les deux scripts sont des scripts frontaux (utilisés par les utilisateurs). Ce dernier est un wrapper de haut niveau pour plusieurs compile-tool*.ps1 scripts.

33
Paebbels

Vous pouvez spécifier $true ou $false sur un commutateur utilisant la syntaxe deux-points:

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

Il suffit donc de transmettre la valeur réelle:

compile-tool1.ps1 -VHDL2008:$VHDL2008
51
Martin Brandl

Essayer

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