朋友们,我确实在PowerShell中运行了一些ReST api调用,并且确实得到了一个
$response
page content
---- -------
@{size=20; number=0; totalPages=1; totalElements=1} {@{id=ZGR2ZS0yLnZsYWIubG9j…当我转换为JSON时
PS C:\Users\Administrator\Documents> $response |转换为Json
{
"page": {
"size": 20,
"number": 0,
"totalPages": 1,
"totalElements": 1
},
"content": [
{
"id": "ZGR2ZS0yLnZsYWIubG9jYWw6MzAwOTpob3N0",
"host": "ddve-2.vlab.local",
"port": "3009",
"notValidBefore": "Fri Mar 29 21:32:19 PDT 2019",
"notValidAfter": "Sat Mar 29 04:32:19 PDT 2025",
"fingerprint": "E1BB40B0284595297071177FE02BC9C76E85CD66",
"subjectName": "CN=ddve-2.vlab.local, O=Valued DataDomain customer, OU=Hos
t Certificate, ST=CA, C=US",
"issuerName": "CN=ddve-2.vlab.local, OU=Root CA, O=Valued Datadomain Custo
mer, L=Santa Clara, ST=CA, C=US",
"state": "ACCEPTED",
"type": "HOST"
}
]
}an idividual value can be seen
PS C:\Users\Administrator\Documents> $response.content.state
ACCEPTED但是设置新值失败。
PS C:\Users\Administrator\Documents> $response.content.state = 123
InvalidOperation: The property 'state' cannot be found on this object. Verify th
at the property exists and can be set.发布于 2020-11-16 04:54:17
因为您的content .state 属性是一个(单元素)数组(其值包含在JSON表示中的[ ... ]中就可以证明这一点),您必须使用索引E213>E114来指定哪个元素的e215.state属性为。
$response.content[0].state = 123请注意,获取值不需要索引(即$response.content.state工作并返回"ACCEPTED",正如您所说的那样),因为PowerShell随后应用member enumeration,这意味着它枚举数组中所有元素的<>d35>属性值(对于单元素数组,它只返回单个元素的值,而对于多元素数组,它返回一个值数组)。
On setting a property value,member enumeration is by design not supported,尽管错误消息肯定会更有帮助-请参阅this answer。
发布于 2020-11-16 04:47:09
您的对象是一个PSCustomObject,而您试图更改的值是该对象上的一个NoteProperty,您可以使用带有-Force开关的Add-Member来覆盖它。
$Response = @"
{
"page": {
"size": 20,
"number": 0,
"totalPages": 1,
"totalElements": 1
},
"content": [
{
"id": "ZGR2ZS0yLnZsYWIubG9jYWw6MzAwOTpob3N0",
"host": "ddve-2.vlab.local",
"port": "3009",
"notValidBefore": "Fri Mar 29 21:32:19 PDT 2019",
"notValidAfter": "Sat Mar 29 04:32:19 PDT 2025",
"fingerprint": "E1BB40B0284595297071177FE02BC9C76E85CD66",
"subjectName": "CN=ddve-2.vlab.local, O=Valued DataDomain customer, OU=Hos
t Certificate, ST=CA, C=US",
"issuerName": "CN=ddve-2.vlab.local, OU=Root CA, O=Valued Datadomain Custo
mer, L=Santa Clara, ST=CA, C=US",
"state": "ACCEPTED",
"type": "HOST"
}
]
}
"@ | ConvertFrom-Json
$Response.Content.State
$Response.Content | Add-Member -MemberType NoteProperty -Name State -Value 123 -Force
$Response.Content.State输出
ACCEPTED
123https://stackoverflow.com/questions/64848746
复制相似问题