Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在powershell中,如何从;剩余的;从命令行传递的参数?_Arrays_Powershell_Parameters - Fatal编程技术网

Arrays 在powershell中,如何从;剩余的;从命令行传递的参数?

Arrays 在powershell中,如何从;剩余的;从命令行传递的参数?,arrays,powershell,parameters,Arrays,Powershell,Parameters,当函数需要字符串数组时,在命令行上键入(“arg0”、“arg1”、“arg2”)很不方便。如本例所示: function Exec-GradleScript( [Parameter(Mandatory)]String] $ScriptName [Parameter(Mandatory)][String[]] $ArgList ){ & "$ScriptName" $ArgList } 。。。-ScriptName之后的所有参数都必须

当函数需要字符串数组时,在命令行上键入(“arg0”、“arg1”、“arg2”)很不方便。如本例所示:

function Exec-GradleScript(
    [Parameter(Mandatory)]String] $ScriptName
    [Parameter(Mandatory)][String[]] $ArgList
    ){
    & "$ScriptName" $ArgList
}
。。。-ScriptName之后的所有参数都必须使用显式数组语法。 我怎样才能避免这种情况,这样我就可以打字了

Exec-GradleScript foo.gradle arg0 arg1 arg2
还有一个$ArgList值要传递给可执行文件吗?

注意:

  • 该解决方案由提供,其中显示了如何使用
    ValueFromRemainingArguments
    参数属性收集单个数组参数中所有未绑定的位置参数

  • 我想你的功能已经简化了;如前所述,在链接答案中实现解决方案基本上不需要该函数-您只需调用
    foo.gradle arg0 arg1 arg2
    直接执行(假设
    foo.gradle
    是直接可执行的,这是函数建议的)

  • 顺便说一句:使用
    $ScriptName
    而不是
    “$ScriptName”
    就足够了,因为与POSIX类shell不同,PowerShell允许您使用不带引号的变量,即使其值包含空格或其他shell元字符(不执行所谓的shell扩展)


至于:

当函数需要字符串数组时,在命令行上键入(“arg0”、“arg1”、“arg2”)很不方便

繁琐的语法
(“arg0”、“arg1”、“arg2”)
仅在表达式解析模式下需要。

在参数解析模式下-当您向命令传递参数时-可以使用更宽松的语法传递数组-不带括号和引号(除非元素是包含空格或PowerShell元字符的文本,例如,
'arg 0'
):

#数组周围没有括号,元素没有引号。
Exec GradleScript foo.gradle arg0、arg1、arg2
有关PowerShell的两种基本解析模式的更多信息,请参阅。

注意:

  • 该解决方案由提供,其中显示了如何使用
    ValueFromRemainingArguments
    参数属性收集单个数组参数中所有未绑定的位置参数

  • 我想你的功能已经简化了;如前所述,在链接答案中实现解决方案基本上不需要该函数-您只需调用
    foo.gradle arg0 arg1 arg2
    直接执行(假设
    foo.gradle
    是直接可执行的,这是函数建议的)

  • 顺便说一句:使用
    $ScriptName
    而不是
    “$ScriptName”
    就足够了,因为与POSIX类shell不同,PowerShell允许您使用不带引号的变量,即使其值包含空格或其他shell元字符(不执行所谓的shell扩展)


至于:

当函数需要字符串数组时,在命令行上键入(“arg0”、“arg1”、“arg2”)很不方便

繁琐的语法
(“arg0”、“arg1”、“arg2”)
仅在表达式解析模式下需要。

在参数解析模式下-当您向命令传递参数时-可以使用更宽松的语法传递数组-不带括号和引号(除非元素是包含空格或PowerShell元字符的文本,例如,
'arg 0'
):

#数组周围没有括号,元素没有引号。
Exec GradleScript foo.gradle arg0、arg1、arg2
有关PowerShell的两种基本解析模式的更多信息,请参阅