다른 매개 변수 값이 포함 된 매개 변수를 함수에 전달할 때 PowerShell 런타임에서 표현식 모드로 문자열을 구문 분석하도록하는 방법을 알아 내려고합니다. 예를 들어 첫 번째 매개 변수의 값을 사용하여 두 번째 매개 변수가있는 함수에 두 개의 매개 변수를 전달하려고합니다. 파서가 표현 모드에서 두 번째 매개 변수 값을 평가해야하지만 출력이 첫 번째 매개 변수의 값을 해석하지 않는 것 같습니다.PowerShell 함수 매개 변수 값 매개 변수 사이의 해결
PowerShell을 명령 # 1 본 실시 예는 원하는 작동 출력
& { param($test1,$test2); $test1; $test2 } "foo" "Test 1 value: $(2 + 2)"
2 + 2 주위 하위 표현식을 사용하는 경우 명령 식 모드에서 평가 증명
foo
Test 1 value: 4
PowerShell을 명령 # 2 이제 매개 변수 2 ($ test2)가 매개 변수 1 ($ test1)의 값을 참조하도록 동일한 것을 시도하면 표현식이 평가되지 않았거나 적어도 $ test1의 값이 공백이거나 null입니다. .
& { param($test1,$test2); $test1; $test2 } "foo" "Test 1 value: $($test1)"
출력 나는 그것을 "foo는"을 $ TEST1 매개 변수에 전달 된 값이어야 생각할 때 테스트 한 값이 비어 얼마나
foo
Test 1 value:
참고. PowerShell 함수에서 매개 변수 범위에 대해 무엇을 놓치고 있습니까? $ test1 값을 $ test2 값으로 전달 된 표현식에서 참조 할 수없는 이유는 무엇입니까? 이 일을 더 우아한 방법이 있습니까?
좋은 결과를 얻었습니다. 이후에 $ test2를 실행하여 $ test를 실행하고 계신 것 같군요. btw, 대답을 표시해야 할 경우 왼쪽 눈금이 그 일을합니다. :-) – Matt
나중에 실제로 & $ test2 구문을 사용하여 명령을 실행하지는 않습니다. 대신 변수 값은 구문 분석되어 원래 문자열에서 대체되어 스크립트에서 더 아래쪽으로 사용됩니다. 핵심은 파서가 PowerShell에서 ExpandString 함수를 사용하여 변수를 다시 평가하도록합니다. – JPC