2016-10-25 2 views
0

Я пытаюсь ссылаться на свойство объекта без с использованием Get-Variable.
Кто-нибудь знает, как это сделать?Свойства ссылочного объекта через переменную

$myObject = New-Object -TypeName PSObject -Property @{ 
    url    = 'TESTURL' 
    webResponse  = '' 
} 

$objName = 'myObject' 

Write-Host Attempt1 
(Get-Variable -Name $objName -ValueOnly).url  # this works, yields TESTURL. 

Write-Host Attempt2 
$($objName).url # this fails, $($objName) returns a string instead of an object 

Я ожидал $($objName) вернуть объект, но он возвращает строку вместо.

+0

Ну, конечно же, $ ObjName это имя объекта. '$ myObject.url' должен работать. – ESG

ответ

2

$objName is string, вы сами определили его как строку. То, что вы делаете с Get-Variable, получает переменную, которая называется myObject. Значение, которое вы получили от Get-Variable, является фактической переменной правильного типа. Как уже указывалось, будет работать $myObject.url.

Сравните это, скажем, слово apple и фактические фрукты

+0

Я знаю, что '$ myObject.url' будет работать. Но дело в том, что у меня есть несколько объектов, у которых есть свойство URL. У меня также есть массив с именами объектов. Я хотел бы перебрать эти имена и получить доступ к соответствующим объектам, установив URL-адрес. Предпочтительно без использования Get-Variable. Другого пути нет? –

+0

Ничто не останавливает вас от выполнения '$ variable1 = Get-Varable $ name1', а затем' $ variable1.property' –

+0

Вы также можете использовать массив варов или словарь и цикл – JPBlanc

Смежные вопросы