我使用PowerShell获取作为PSObject返回的JSON内容,这样当我想在对象中调用属性的值时,我可以通过调用变量来获取值:
$endpoint.authorization
但我想在现有授权属性中添加一个新属性,最终看起来像:
$endpoint.authorization.parameters.username
我已经发现我可以使用Select和Add-Member cmdlet来管道变量,但是当我再次调用原始变量时,它看起来并没有做任何事情。这是我的代码的样子:
$endpoint | Select -Property "authorization" | Add-Member -NotePropertyName "parameters.username" -NotePropertyValue "test"
当我在该行代码之后检查它时,端点变量似乎没有任何变化。必须有一些我不知道的简单,但有关如何添加新属性作为现有属性的子属性的任何想法?
答案 0 :(得分: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:\>
帮助链接(如果有):
ConvertFrom-Json
(在模块Microsoft.PowerShell.Utility中)Add-Member
(在模块Microsoft.PowerShell.Utility中)