我遇到了这个奇怪的问题,想知道如何解决它。
在我的Windows机器上运行Powershell 5.1.190411.682(major.minor.build.revision(,下面的命令为我提供了一个合适的JSON。
PS C:workspacerapidresponsejenkinslib-dsresourcesscripts> kubectl get accountquota account-name-quota -o jsonpath="{.status.total}"
{"hard":{"limits.cpu":"256","limits.memory":"256G","pods":"200","requests.cpu":"64","requests.memory":"128G"},"used":{"limits.cpu":"28","limits.memory":"73Gi","pods":"13","requests.cpu":"28","requests.memory":"73Gi"}}
编辑:这里的kubectl版本是1.24.1
然而,在另一台机器上(一台运行旧版本5.1.143932636的Windows机器(,我得到了完全不同的结果。
PS C:Userssa_a9_dst_validation> kubectl get accountquota account-name-quota -o jsonpath="{.status.total}"
map[hard:map[limits.cpu:256 limits.memory:256G pods:200 requests.cpu:64 requests.memory:128G] used:map[limits.cpu:27 lim
its.memory:72Gi pods:12 requests.cpu:27 requests.memory:72Gi]]
编辑:此机器的kubectl版本为1.18.2
结果看起来JSON在内部转换为PS自定义对象在返回结果之前对其调用ToString()
。
我的目标
我正在尝试将JSON结果转换为对象,即使用ConvertFrom-Json
。有这样一个奇怪的字符串迫使我为它编写一个自定义解析器,而这不是我想要做的。你知道它为什么会这样做吗?如果是,有没有办法使用现有的Powershell函数来做到这一点?
事实证明,kubectl
版本1.18.2
确实是导致该问题的原因。当我将kubectl
版本从1.24.2
降级到1.18.2
时,我可以重现这个问题。
感谢@mclayton、@MathiasR.Jessen和@mkulement0