2011-08-26 2 views
13

저는 Powershell을 처음 사용하고 있습니다. 함수 내에서 [ref] 변수의 값을 출력하는 방법을 찾으려고합니다. 다음과 같이powershell : [ref] 변수에서 값을 쓰는 방법

function testref([ref]$obj1) { 
    $obj1.value = $obj1.value + 5 
    write-host "the new value is $obj1" 
    $obj1 | get-member 
} 


$foo = 0 
"foo starts with $foo" 
testref([ref]$foo) 
"foo ends with $foo" 

내가이 시험에서 얻을 출력은 다음과 같습니다

여기 내 테스트 코드입니다. 내가 바라는대로 $ obj1의 값을 얻지 못한다는 것을 알게 될 것이다. write-host에 대한 호출에서 $ obj1.value를 전달하려고했지만 동일한 응답을 생성했습니다.

PS > .\testref.ps1 
foo starts with 0 
the new value is System.Management.Automation.PSReference 


    TypeName: System.Management.Automation.PSReference 

Name  MemberType Definition 
----  ---------- ---------- 
Equals  Method  bool Equals(System.Object obj) 
GetHashCode Method  int GetHashCode() 
GetType  Method  type GetType() 
ToString Method  string ToString() 
Value  Property System.Object Value {get;set;} 
foo ends with 5 

답변

29

당신은 아마 시도했을 :

write-host "the new value is $obj1.value" 

the new value is System.Management.Automation.PSReference.value 

의 출력을 해당있어 난 당신이 출력의 끝에서 .value을 통보하지 않았다 생각합니다.

write-host "the new value is $($obj1.value)" 

또는 사용 문자열 형식을 다음과 같이 : 문자열에서

당신은 속성에 액세스하는 동안이 같은 뭔가를해야

write-host ("the new value is {0}" -f $obj1.value) 

또는 외부 $value = $obj1.value 같은 값을 할당하고 문자열을 사용합니다.

+0

예. 감사! – Denis

+0

@Denis - 문제가 해결되면 대답을 수락하십시오! – manojlds

+0

어떻게하면됩니까? – Denis