gpt4 book ai didi

powershell - 如何将参数列表保存在变量中

转载 作者:行者123 更新时间:2023-12-03 16:41:06 24 4
gpt4 key购买 nike

我有一个脚本 internal.ps1它接受某些参数:

param ($paramA, $paramB)
Write-Host $PSBoundParameters

和一个脚本 caller.ps1这叫它:
.\internal -paramA A -paramB B

它工作得很好:
PS C:\temp> .\caller
[paramA, A] [paramB, B] <<<< bounded to both params

但是,在调用者中,我想将参数保留在内部变量中,稍后再使用。但是,这不起作用:
$parms = "-paramA A -paramB B"
# Later...
.\internal $parms

Result: [paramA, A -paramB B] <<<<< All got bounded to ParamA

使用数组也不行:
$parms = @("A", "B")
# Later...
.\internal $parms

Result: [paramA, System.Object[]] <<<< Again, all bound to ParamA

我怎样才能做到这一点?请注意,实际的命令行更复杂,并且可能具有未知长度。

最佳答案

splatting operator (@) 应该做你需要的。
首先考虑这个简单的函数:

function foo($a, $b) { "===> $a + $b" }

使用显式参数调用会产生您期望的结果:
foo "hello" "world"
===> hello + world

现在将这两个值放在一个数组中;正如您所观察到的,传递普通数组会产生不正确的结果:
$myParams = "hello", "world"
foo $myParams
===> hello world +

但是用数组代替,你会得到想要的结果:
foo @myParams
===> hello + world

这适用于脚本以及函数。回到你的脚本,这是结果:
 .\internal @myParams
[paramA, hello] [paramB, world]

最后,这将适用于任意数量的参数,因此需要了解它们的先验知识。

关于powershell - 如何将参数列表保存在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17189586/

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