我怎样才能让我的脚本允许任何参数?
How can I allow my script to allow any parameter?
我正在尝试弄清楚如何让我的 PowerShell 脚本允许任意参数,而无需指定我可能期望使用 param
的所有内容。
四处搜索我发现我可以使用 $args
和 $myinvocation.mycommand.unboundarguments
。
我想做的是-
.\myscript.ps1 -prop1 "foo" -prop2 "bar"
这样做的目的是我计划使用 属性 来评估密钥对以更新我的配置文件。
这可能吗?
$Args
将捕获所有未明确定义为参数的输入。
有关详细信息,请参阅 about_Automatic_Variables。
@Jon-Tirjan 的回答 $Args
的插图,
显示它如何跳过已声明的参数。
# myscript.ps1
param (
[string] $param1,
[string] $param2
)
Write-Host "param1 = $param1"
Write-Host "param2 = $param2"
$n = 0
foreach ($arg in $args) {
write-host "$n $arg"
$n += 1
}
.\myscript.ps1 -param2 'p2' -foo -bar bim -param1 'p1' -zip zap
param1 = p1
param2 = p2
0 -foo
1 -bar
2 bim
3 -zip
4 zap
我正在尝试弄清楚如何让我的 PowerShell 脚本允许任意参数,而无需指定我可能期望使用 param
的所有内容。
四处搜索我发现我可以使用 $args
和 $myinvocation.mycommand.unboundarguments
。
我想做的是-
.\myscript.ps1 -prop1 "foo" -prop2 "bar"
这样做的目的是我计划使用 属性 来评估密钥对以更新我的配置文件。
这可能吗?
$Args
将捕获所有未明确定义为参数的输入。
有关详细信息,请参阅 about_Automatic_Variables。
@Jon-Tirjan 的回答 $Args
的插图,
显示它如何跳过已声明的参数。
# myscript.ps1
param (
[string] $param1,
[string] $param2
)
Write-Host "param1 = $param1"
Write-Host "param2 = $param2"
$n = 0
foreach ($arg in $args) {
write-host "$n $arg"
$n += 1
}
.\myscript.ps1 -param2 'p2' -foo -bar bim -param1 'p1' -zip zap
param1 = p1
param2 = p2
0 -foo
1 -bar
2 bim
3 -zip
4 zap