在powershell中是否可以使用带圆点的参数名称?显而易见的方法 - 请参阅Dmaven.failsafe.debug
失败:
function mvn-failsafe-debug {
param (
[string] $Dmaven.failsafe.debug="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_shmem,server=y,address=Maven,suspend=n",
[parameter(Position=0, ValueFromRemainingArguments=$true)]
$args
)
& "$env:M2_HOME\bin\mvn.bat" $args
}
答案 0 :(得分:6)
Windows PowerShell Language Specification Version 3.0。 2.3.4参数部分表示
parameter-char:
Any Unicode character except
{ } ( ) ; , | & . [
colon
whitespace
new-line-character
因此,点实际上不是有效的参数名称字符。
有趣的是,可以使用像${...}
param (
[string] ${Dmaven.failsafe.debug}
)
PowerShell允许上述内容。但是在调用命令时很难指定这样的参数名称。
一些实验:
function Test-ParameterWithDots {
param(
[string]${Parameter.With.Dots}
)
"Parameter : ${Parameter.With.Dots}"
}
# OK
Test-ParameterWithDots value1
# not OK
Test-ParameterWithDots -Parameter.With.Dots value2
# workaround with splatting
$params = @{ 'Parameter.With.Dots' = 'value3' }
Test-ParameterWithDots @params
输出:
Parameter : value1
Parameter : .With.Dots
Parameter : value3
因此,通过spatting我们仍然可以指定这样的参数名称。
答案 1 :(得分:1)