PowerShell 对象属性递归
PowerShell object properties recursive
我需要一个具有以下要求的函数:
函数被分配了一个未知对象。不知道该对象有多少属性和/或子对象。
然后函数递归遍历对象,直到它知道对象的所有属性。
PowerShell 然后应该像 JSON 文件一样输出它。但没有添加字符 ( { } [ ] , ).
我很确定 ConvertTo-Json cmdlet 具有这样的功能,但我不能自己编写/使用它。
请使用 cmdlet“Format-List”或类似的东西格式化整个内容,而不是手动使用制表符或空格。
这是一个小例子:
示例对象:
$Car = [PSCustomObject] @{
Tire = [PSCustomObject] @{
Color = "Black"
Count = 4
}
Doors = [PSCustomObject]@{
Color = "Blue"
Diameter = 21
}
}
JSON 文件的输出:
{
"Tire": {
"Color": "Black",
"Count": 4
},
"Doors": {
"Color": "Blue",
"Diameter": 21
}
}
所需输出:
Tire:
Color: Black
Count: 4
Doors:
Color: Blue
Diameter: 21
输出应保存在字符串变量中。
我已经研究了好几天了,但找不到任何东西。
非常感谢。
您在上面寻找的输出似乎是(至少接近于)YAML 语法。您可以使用 'powershell-yaml' 模块以您需要的形式输出。
确保您已安装 'powershell-yaml' 模块 (Install-Module powershell-yaml
),然后尝试执行以下操作:
命令
$Car = [PSCustomObject] @{
Tire = [PSCustomObject] @{
Color = "Black"
Count = 4
}
Doors = [PSCustomObject]@{
Color = "Blue"
Diameter = 21
}
}
ConvertTo-Yaml $car
输出
Tire:
Color: Black
Count: 4
Doors:
Color: Blue
Diameter: 21
输出与您正在寻找的相同,ConvertTo-Yaml
应该适用于所有 PSObjects。
我需要一个具有以下要求的函数:
函数被分配了一个未知对象。不知道该对象有多少属性和/或子对象。 然后函数递归遍历对象,直到它知道对象的所有属性。
PowerShell 然后应该像 JSON 文件一样输出它。但没有添加字符 ( { } [ ] , ).
我很确定 ConvertTo-Json cmdlet 具有这样的功能,但我不能自己编写/使用它。
请使用 cmdlet“Format-List”或类似的东西格式化整个内容,而不是手动使用制表符或空格。
这是一个小例子: 示例对象:
$Car = [PSCustomObject] @{
Tire = [PSCustomObject] @{
Color = "Black"
Count = 4
}
Doors = [PSCustomObject]@{
Color = "Blue"
Diameter = 21
}
}
JSON 文件的输出:
{
"Tire": {
"Color": "Black",
"Count": 4
},
"Doors": {
"Color": "Blue",
"Diameter": 21
}
}
所需输出:
Tire:
Color: Black
Count: 4
Doors:
Color: Blue
Diameter: 21
输出应保存在字符串变量中。
我已经研究了好几天了,但找不到任何东西。
非常感谢。
您在上面寻找的输出似乎是(至少接近于)YAML 语法。您可以使用 'powershell-yaml' 模块以您需要的形式输出。
确保您已安装 'powershell-yaml' 模块 (Install-Module powershell-yaml
),然后尝试执行以下操作:
命令
$Car = [PSCustomObject] @{
Tire = [PSCustomObject] @{
Color = "Black"
Count = 4
}
Doors = [PSCustomObject]@{
Color = "Blue"
Diameter = 21
}
}
ConvertTo-Yaml $car
输出
Tire:
Color: Black
Count: 4
Doors:
Color: Blue
Diameter: 21
输出与您正在寻找的相同,ConvertTo-Yaml
应该适用于所有 PSObjects。