【问题标题】:How do I call multiple parameters with multiple arguments on one line in Powershell?如何在 Powershell 的一行中调用具有多个参数的多个参数?
【发布时间】: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


【解决方案1】:

您可以尝试使用参数集名称:

[CmdletBinding(DefaultParameterSetName="Q")]

param(    
    [Alias('c')]
    [string]$csv,   
    [Alias('h')]
    [switch]$help,    
    [Alias('f')]
    [switch]$fields,    
    [Alias('s')]
    [string]$sql,   
    [Parameter(ParameterSetName="Q", mandatory=$true)] 
    [Alias('q')]
    [int]$query,
    [Parameter(ParameterSetName="Q")] 
    [object[]]$arg        
)

这样你不能只使用-arg参数调用函数,你还需要调用-query

$arg 接受一个数组,您可以输入您的主机值,以逗号分隔。如果你想用空格分隔值,你可以声明 [string]$arg 并在引号中传递值,但你需要添加一些逻辑(split 空格等等...)以使输入在脚本中有用。

要为您的脚本添加自定义帮助,请阅读此处http://blogs.technet.com/b/heyscriptingguy/archive/2010/01/07/hey-scripting-guy-january-7-2010.aspx

【讨论】:

    猜你喜欢
    • 2022-11-26
    • 2021-05-03
    • 2021-06-27
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    相关资源
    最近更新 更多