【发布时间】:2011-11-24 20:31:55
【问题描述】:
我试图弄清楚在将包含另一个参数值的参数传递给函数时,如何强制 PowerShell 运行时以表达式模式解析字符串。例如,我想使用第一个参数的值将两个参数传递给带有第二个参数的函数。我知道我需要让解析器在表达式模式下评估第二个参数值,但输出似乎无法解析第一个参数的值。
PowerShell 命令 #1 此示例按预期工作,并证明当使用 2 + 2 左右的子表达式时,该命令在表达式模式下进行计算
& { param($test1,$test2); $test1; $test2 } "foo" "Test 1 value: $(2 + 2)"
输出
foo
Test 1 value: 4
PowerShell 命令 #2 现在,当我尝试相同的方法让参数二 ($test2) 引用参数一 ($test1) 的值时,似乎没有计算表达式,或者至少 $test1 的值是空白或 null。
& { param($test1,$test2); $test1; $test2 } "foo" "Test 1 value: $($test1)"
输出
foo
Test 1 value:
请注意,当我认为应该是“foo”时,Test 1 的值是空白的,这是 $test1 参数中传递的值。关于 PowerShell 函数中的参数范围,我缺少什么?为什么 $test1 值不能在作为 $test2 的值传递的表达式中引用?有没有更优雅的方法来做到这一点?
【问题讨论】:
标签: function powershell parameters parameter-passing