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, как я надеялся. Я также попытался передать в $obj1.value в вызове write-host, но тот сгенерировал тот же ответ.
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
Ответы
Ответ 1
Вероятно, вы бы попытались:
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
, и используйте в строке.