PowerShell에서 명명된 매개 변수를 [ref]로 정의하는 방법
사용하려고 합니다.[ref]
이름이 지정된 매개 변수.그러나 오류가 발생합니다.
workflow Test
{
Param([Parameter(Mandatory=$true)][String][ref]$someString)
write-verbose $someString -Verbose
$someString = "this is the new string"
}
cls
$someString = "hi"
Test -someString [ref]$someString
write-host $someString
#Error: Cannot process argument transformation on parameter 'someString'. Reference type is expected in argument.
이 문제를 해결하려면 어떻게 해야 합니까?
[ref] 매개 변수 예제에서 "workflow"를 사용하고 있음을 확인했습니다.단순화를 위해 "기능"이라고 부르고 나중에 "워크플로우"로 돌아가도록 합시다.
코드를 변경해야 할 세 가지 사항이 있습니다.
- [ref] 매개변수를 함수로 전달할 때 매개변수를 괄호 안에 넣어야 합니다.
()
. - 함수 내에서 [ref] 파라미터를 사용할 경우 $variable.value를 참조합니다.
- 매개 변수 정의에서 [string] type을 제거합니다.[string], [ref]일 수 있지만 둘 다는 아닙니다.
작동하는 코드는 다음과 같습니다.
function Test
{
Param([Parameter(Mandatory=$true)][ref]$someString)
write-verbose $someString.value -Verbose
$someString.value = "this is the new string"
}
cls
$someString = "hi"
Test -someString ([ref]$someString)
write-host $someString
"워크플로우"에 관해서는.PowerShell Workflow는 매우 제한적입니다. 제한사항.특히 워크플로우 내의 개체에서는 메서드를 호출할 수 없습니다.이렇게 하면 선이 끊어집니다.
$someString.value = "this is the new string"
워크플로우에서 [ref] 매개변수를 사용하는 것은 워크플로우 제한 때문에 실용적이지 않다고 생각합니다.
파워셸 함수에서 참조 매개변수 사용에 대한 정보를 검색할 때 첫 구글 히트작이었기 때문에 저는 이 보완적인 매우 단순한 답변을 작성해야 한다고 느꼈습니다.함수가 아닌 워크플로우에 대한 질문이었지만:
함수에서 참조 매개변수 사용 예제(워크플로우와 함께 작동하지 않음):
Function myFunction ([ref]$aString) {
$aString.Value = "newValue";
}
$localVariable = "oldValue"
Write-Host $localVariable # Outputs: oldValue
myFunction ([ref]$localVariable);
Write-Host $localVariable # Outputs: newValue
함수를 사용하면 매개 변수를 다음과 같이 참조 및 다른 유형으로 정의할 수 있습니다(워크플로우에서는 정의할 수 없음).
Function myFunction ([ref][string]$aString) {
$aString.Value = "newValue";
}
$localVariable = "oldValue"
Write-Host $localVariable # Outputs: oldValue
myFunction ([ref]$localVariable);
Write-Host $localVariable # Outputs: newValue
Jan의 의견에 동의합니다. 워크플로우 제한(객체에 대한 메서드 호출) 때문에 워크플로우에서 참조 매개 변수를 사용하려고 하면 안 됩니다.https://blogs.technet.microsoft.com/heyscriptingguy/2013/01/02/powershell-workflows-restrictions/
언급URL : https://stackoverflow.com/questions/29596634/how-to-define-named-parameter-as-ref-in-powershell
'programing' 카테고리의 다른 글
Python git 저장소를 복제하는 방법 (0) | 2023.10.27 |
---|---|
자동 완료 시 트리거된 이벤트가 있습니까? (0) | 2023.10.27 |
editline/history.h 및 editline/readline.h를 찾을 수 없음/이미 설치된 개발자 도구로 컴파일하려고 할 때 macOS에서 작동함 (0) | 2023.10.27 |
더 작은 배당과 더 큰 분배의 모듈러스는 어떻게 작동합니까? (0) | 2023.10.27 |
컴파일 시 스택 사용량 확인 (0) | 2023.10.27 |