gpt4 book ai didi

powershell - Powershell从对象中选择NoteProperty类型对象

转载 作者:行者123 更新时间:2023-12-03 00:40:50 24 4
gpt4 key购买 nike

我正在使用深度嵌套的JSON,在convertfrom-json之后,需要能够遍历convertfrom-json cmdlet生成的对象的各个部分。
据我所知,我无法事先知道对象内部可能存在或未包含哪些属性名称,有数百种可能的属性。幸运的是,我看到有帮助的一件事是,我关心的每个属性的类型均为“NoteProperty”。
这是一个例子:

TypeName: System.Management.Automation.PSCustomObject

Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
definition NoteProperty System.Management.Automation.PSCustomObject definition=@{$schema=https://schema.management.azure.com/providers/Microsof...
integrationAccount NoteProperty System.Management.Automation.PSCustomObject integrationAccount=@{id=[parameters('integrationAccounts_xxx_integration...
parameters NoteProperty System.Management.Automation.PSCustomObject parameters=@{$connections=}
state NoteProperty string state=Enabled
因此,我认为创建一个仅针对当前正在处理的级别仅选择“MemberType”,“NoteProperty”的对象的函数将很简单。
我尝试将对象传递到:
where-object { $_.MemberType -eq "NoteProperty" }
不。
我也尝试过各种形式的选择对象,但似乎无法选择我所需要的对象。我从脚本编写人员那里找到了一篇有关使用标签和表达式的老文章-但这似乎有点过头了,不是吗?有人可以指出简单的方法来仅选择NoteProperty项目吗?
谢谢!

最佳答案

您可以使用隐藏的.psobject.properties遍历成员。

$json = @'
{
"users": [
{
"userId": 1,
"firstName": "Krish",
"lastName": "Lee",
"phoneNumber": "123456",
"emailAddress": "krish.lee@learningcontainer.com"
},
{
"userId": 2,
"firstName": "racks",
"lastName": "jacson",
"phoneNumber": "123456",
"emailAddress": "racks.jacson@learningcontainer.com"
}
]
}
'@ | ConvertFrom-Json

$json | foreach {
$_.psobject.properties | foreach {
Write-Host Property Name: $_.name
Write-Host Values: $_.value
}
}
您可以根据需要继续操作。
$json | foreach {
$_.psobject.properties | foreach {
$_.value | foreach {
$_.psobject.properties | foreach {
write-host Property name: $_.name
write-host Property value: $_.value
}
}
}
}

Property name: userId
Property value: 1
Property name: firstName
Property value: Krish
Property name: lastName
Property value: Lee
Property name: phoneNumber
Property value: 123456
Property name: emailAddress
Property value: krish.lee@learningcontainer.com
Property name: userId
Property value: 2
Property name: firstName
Property value: racks
Property name: lastName
Property value: jacson
Property name: phoneNumber
Property value: 123456
Property name: emailAddress
Property value: racks.jacson@learningcontainer.com

关于powershell - Powershell从对象中选择NoteProperty类型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64187004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com