【发布时间】:2016-11-25 17:08:53
【问题描述】:
我想让可变数量的参数进入一个变量
script.ps1 first -second a -third b
我想要的是让“first -second a -third b”都在一个变量中。
如果不将所有参数作为一个字符串传递,这可能吗?
【问题讨论】:
标签: powershell
我想让可变数量的参数进入一个变量
script.ps1 first -second a -third b
我想要的是让“first -second a -third b”都在一个变量中。
如果不将所有参数作为一个字符串传递,这可能吗?
【问题讨论】:
标签: powershell
您可以在一个变量的Parameter 属性中使用ValueFromRemainingArguments option
param(
[Parameter(Mandatory=$true,ValueFromRemainingArguments=$true)]
[psobject[]]$InputObject
)
foreach($value in $InputObject)
{
Write-Host $value
}
现在您可以提供任意数量的参数:
PS C:\> .\script.ps1 many arguments can go here
many
arguments
can
go
here
【讨论】:
如果您想将列表中的第一个参数视为子命令并将其余参数传递给其他函数/cmdlet,我只需 split'n'splat automatic variable $args ,例如像这样:
$subcommand, $params = $args
switch ($subcommand) {
'foo' { Do-Some @params }
'bar' { Do-Other @params }
default { Write-Error "Unknown subcommand: $_" }
}
【讨论】: