带有可选值的Powershell字符串parm(或带字符串值的switch parm)

时间:2014-04-29 22:26:10

标签: powershell-v2.0

我希望我的脚本接受可选“-build”参数,也可选指定构建目标。如果用户指定-build而未指定值,则将使用默认目标。所以

doit.ps1

不会进行构建。 (它做其他事情)

doit.ps1 -build 

将构建c:\ source \ myproj.sln

doit.ps1 -build c:\otherssource.sln

当然会构建该项目。

我看不出怎么做。如果指定了字符串parm,则需要一个值,而switch parm不支持​​值。建议?

1 个答案:

答案 0 :(得分:0)

据我所知,在PowerShell中,一个用作开关的参数,这是你的第一个案例无法估价,一个不是开关的参数需要一个值。以下是一段代码,可帮助您使用$PSBoundParameters解决问题。

Param
(
  #[CmdletBinding()]
  [parameter(Mandatory=$false)]
  [switch]$Builddefault,
  [String]$Build
)

Write-host 'Hello'

if ($PSBoundParameters.Keys -contains 'Builddefault')
{
  Write-Host "Builddefault is present"
}

if ($PSBoundParameters.Keys -contains 'Build')
{
  Write-Host "Build is present"
}