gpt4 book ai didi

powershell - 如何在Powershell的一行上调用带有多个参数的多个参数?

转载 作者:行者123 更新时间:2023-12-02 23:47:33 39 4
gpt4 key购买 nike

我有一个脚本,该脚本要同时使用以下格式调用多个参数,该参数可能需要多个参数:

.\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中做什么?有人对我能做什么有任何想法吗?

最佳答案

您可以尝试使用parameteretname:

[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

关于powershell - 如何在Powershell的一行上调用带有多个参数的多个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14464033/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com