2011-08-26 12 views
13

से लिखने के लिए कैसे करें मूल्य मैं पावरहेल के लिए नया हूं और मैं एक फ़ंक्शन के भीतर से [ref] चर के मान को मुद्रित करने का तरीका बनाने का प्रयास कर रहा हूं।पावरहेल: [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 का मूल्य नहीं मिलेगा। मैंने लिखने के लिए कॉल में $ 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

@ डेनिस - अगर आपकी समस्या हल हो जाती है तो उत्तर के रूप में स्वीकार करें! – manojlds

+0

मैं यह कैसे कर सकता हूं? – Denis