我想知道如何在将包含另一个参数值的参数传递给函数时,强制PowerShell运行时在表达式模式下解析字符串。例如,我想使用第一个参数的值将两个参数传递给第二个参数。我知道我需要解析器在表达式模式下计算第二个参数值,但输出似乎不能解析第一个参数的值。在参数中解析PowerShell函数参数
PowerShell的命令#1 该实施例的工作原理根据需要并证明使用大约2 + 2
& { param($test1,$test2); $test1; $test2 } "foo" "Test 1 value: $(2 + 2)"
输出一子表达式,当命令在表达模式评价
foo
Test 1 value: 4
PowerShell的命令#2 现在,当我尝试相同的事情,让参数2($ test2)引用参数1($ test1)的值时,表达式似乎没有被评估,或者至少$ test1的值为空或为空。
& { param($test1,$test2); $test1; $test2 } "foo" "Test 1 value: $($test1)"
输出
foo
Test 1 value:
注意测试值1怎么是空的时,我觉得应该是“富”,在$ test1的参数传递的价值。我在PowerShell函数中缺少参数范围?为什么$ test1值无法在作为$ test2的值传递的表达式中引用?有没有更优雅的方式来做到这一点?
这很好,你发现,我猜你以后用'&$ test2'执行$ test?顺便说一句,如果这是答案,你应该标记它,左边的勾号做这项工作。 :-) – Matt
我后来并没有使用&$ test2语法实际执行命令。相反,变量值将被解析并替换为原始字符串,以便在脚本中进一步使用。关键是强制解析器使用PowerShell中的ExpandString函数重新评估变量。 – JPC