Powershell 无法修改PS自定义对象中嵌套属性的值

Powershell 无法修改PS自定义对象中嵌套属性的值,powershell,pscustomobject,Powershell,Pscustomobject,我有一个PS自定义对象: TourCode : s TournamentNumber : 524 TournamentName : Mitsubishi Electric Championship at Hualalai EnvironmentType : PGA Tour TournamentRootPath : /mitsubishi-electric-championship-at-hualalai SValues : {@{S1

我有一个PS自定义对象:

TourCode           : s
TournamentNumber   : 524
TournamentName     : Mitsubishi Electric Championship at Hualalai
EnvironmentType    : PGA Tour
TournamentRootPath : /mitsubishi-electric-championship-at-hualalai
SValues            : {@{S1=championstour; S2=tournaments; S3=mitsubishi-electric-championship-at; S4=}}
我可以轻松修改顶级属性(如TourCode或TournamentName)的值:

PS C:\Users\yuriy> $testTournament.TourCode = 'r'

PS C:\Users\yuriy> $testTournament

TourCode           : r
TournamentNumber   : 524
TournamentName     : Mitsubishi Electric Championship at Hualalai
EnvironmentType    : PGA Tour
TournamentRootPath : /mitsubishi-electric-championship-at-hualalai
SValues            : {@{S1=championstour; S2=tournaments; S3=mitsubishi-electric-championship-at; S4=}}
但我在尝试修改SValues属性中的属性S1、S2、S4或S4时,遇到了奇怪的错误消息:

PS C:\Users\yuriy> $testTournament.SValues.S3 = 'newvalue'
The property 'S3' cannot be found on this object. Verify that the property exists and can be set.
At line:1 char:1
+ $testTournament.SValues.S3 = 'newvalue'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException
为什么它说它找不到财产?我可以很容易地通过这样引用它来获得它的值:

PS C:\Users\yuriy> $testTournament.SValues.S3
mitsubishi-electric-championship-at
我做错了什么

UPD:gm-i$TestTornament的输出。屏幕截图上显示了值: 屏幕截图上有JSON片段:(类似数据) 使用以下代码读取和转换JSON文件:

$testData = Get-Content -Raw -Path "Test Data.json" | ConvertFrom-Json
然后创建$TestTornament:

$testTournament = $testData.Tournaments | Get-Random

s值的输出对我来说很奇怪。向我们展示
gm-i$testTournament.SValues的输出。我开始怀疑
SValues
是一个
[String]
。如果您还可以显示创建
$TestTornament
的代码,那将非常有用。
$($TestTornament.SValues)如何。S3='newvalue'
$TestTornament.SValues[0]。S3='newvalue'
?@briantist,$TestTornament是通过ConvertFrom Json cmdlet筛选出对象列表而创建的。@YMM,显示代码本身和源JSON,并显示
gm
输出。把它全部编辑到你的问题中。
SValues
的输出对我来说很奇怪。向我们展示
gm-i$testTournament.SValues的输出。我开始怀疑
SValues
是一个
[String]
。如果您还可以显示创建
$TestTornament
的代码,那将非常有用。
$($TestTornament.SValues)如何。S3='newvalue'
$TestTornament.SValues[0]。S3='newvalue'
?@briantist,$TestTornament是通过ConvertFrom Json cmdlet筛选出对象列表而创建的。@YMM,显示代码本身和源JSON,并显示
gm
输出。将所有内容编辑到您的问题中。