2016-10-27 3 views
0

Я использую PowerShell, чтобы получить содержимое JSON, которое возвращается как объект PSObject, так что, когда я хочу вызвать значение свойства в объекте, я могу получить значение по вызову переменная, как:Добавить свойство свойства в PSObject в PowerShell

$endpoint.authorization 

Но я хотел бы добавить новое свойство внутри существующего имущества авторизации в конечном итоге выглядит как:

$endpoint.authorization.parameters.username 

Я понял, что я могу труба переменной с командлеты Select и Add-Member, но это не похоже на что-либо когда я снова вызову исходную переменную. Вот что мой код выглядит следующим образом:

$endpoint | Select -Property "authorization" | Add-Member -NotePropertyName "parameters.username" -NotePropertyValue "test" 

И ничего, кажется, изменения в переменной конечной точки, когда я проверить его после этой строки кода. Должно быть что-то простое, что мне не хватает, но любые идеи о том, как я могу добавить новое свойство в качестве суб-свойства существующего?

ответ

1

Выбор - это создание нового [PSCustomObject] только с указанным вами свойством, вы добавляете к нему свойства, а затем выбрасываете его.

Реферирование свойство возвращает значение, так что вам нужно что-то добавить к свойству авторизации, а затем что-то добавить к этому:

$endpoint = "{'authorization':{}}" | ConvertFrom-Json 
$endpoint.authorization | Add-Member -NotePropertyName parameters -NotePropertyValue ([PSCustomObject]@{}) 
$endpoint.authorization.parameters | Add-Member -NotePropertyName username -NotePropertyValue test 

PS D:\> $endpoint 

authorization                          
-------------                          
@{parameters=}                         



PS D:\> $endpoint.authorization 

parameters                          
----------                          
@{username=test}                         



PS D:\> $endpoint.authorization.parameters 

username                           
--------                           
test                            



PS D:\> $endpoint.authorization.parameters.username 
test 

PS D:\> 

Или вы могли бы сделать это за один раз, наращивая вещь, которую вы хотите добавить, а затем добавить его, например

$endpoint = "{'authorization':{}}" | ConvertFrom-Json 
$endpoint.authorization | Add-Member -NotePropertyName parameters -NotePropertyValue ([PSCustomObject]@{'username'='test'}) 

Помощь Ссылки (если таковые имеются):

  • ConvertFrom-Json является ConvertFrom-Json (в модуле Microsoft.PowerShell.Utility)
  • Надстройка Пользователь Add-Member (в модуле Microsoft.PowerShell.Utility)
+0

Это aweso Я, Тесселлинг Хеклер! – Sachi

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