【发布时间】:2013-01-06 00:09:36
【问题描述】:
我有一个脚本,我想在其中调用多个参数,它可以同时接受多个参数,格式为:
.\MyScript.ps1 -q <int> --args <hostval1> <hostval2> ... <hostvaln>
现在,除了“q”之外,我还有其他参数,但它们不需要“--args”参数。我目前无法弄清楚如何实现“--args”,因为我目前的参数定义如下:
param(
[Alias('c')]
[string]$csv,
[Alias('h')]
[switch]$help,
[Alias('f')]
[switch]$fields,
[Alias('s')]
[string]$sql,
[Alias('q')]
[int]$query
)
我知道我可以这样运行它来获取主机值,但它需要一个破折号:
.\MyScript.ps1 -q 1 -hostval1 -hostval3 -hostval4
这让
$args[0] = -hostval1
$args[1] = -hostval3
$args[2] = -hostval4
有什么方法可以制作只能用“-q”调用的“辅助”参数(例如--args),并接受多个用空格分隔的值?我可以创建另一个参数,但这会导致在没有“-q”参数的情况下意外调用它,并且还需要在参数之间使用逗号:
[string[]]$hostvals
我希望在 powershell 中做的事情可能吗?有人知道我能做什么吗?
【问题讨论】:
-
你不能只创建一个参数
[string[]]$hostvals并使用它来输入值。如果您只想在设置$query时使用它,请使用此if ($query) { "Query parameter present".. run code that uses $hostvals } else { run code that doesn't use $hostvals } -
有没有办法修改get-help输出?目前它显示这个“MyScript.ps1 [[-csv]
] [[-sql] ] [[-query] ] [[-arg] ] [-help] [-fields]" -
您是否要编辑该语法或提供附加信息以及参数定义等。
标签: powershell parameters arguments parameter-passing powershell-2.0