2011-08-26 13 views
13

Sono nuovo di Powershell e sto cercando di capire come stampare il valore di una variabile [ref] all'interno di una funzione.powershell: come scrivere il valore dell'host dalla variabile [ref]

Ecco il mio codice di prova:

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" 

L'uscita che ricevo da questo test è la seguente. Noterai che non ottengo il valore di $ obj1 come speravo. Ho anche provato a passare $ obj1.value nella chiamata a scrivere-host ma questo ha generato la stessa risposta.

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 

risposta

29

Si sarebbe probabilmente avete provato:

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

e ottenuto uscita del

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

corrispondente Credo che non hai notato il .value alla fine della produzione.

In stringhe che hanno a che fare qualcosa di simile durante l'accesso a proprietà:

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

O uso formato della stringa, in questo modo:

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

o assegnare valore al di fuori come $value = $obj1.value e utilizzare nella stringa.

+0

Sì, era così. Grazie! – Denis

+0

@Denis - Accetta come risposta se risolve il tuo problema! – manojlds

+0

Come faccio? – Denis

Problemi correlati