powershell - 使用多个 psobjects 时 Get-Member 不返回 NoteProperty
问题描述
由于我正在尝试处理的一些 JSON 的结构,这是我发现的奇怪行为。我只是想返回所有属性名称。这是我的 JSON:
$x = @"
[
{
"test": [
"item1"
]
},
{
"test2": [
"item2"
]
}
]
"@ | ConvertFrom-Json
您也可以像这样创建对象,这会导致相同的问题:
$x= @()
$x += [pscustomobject]@{
'test' = 'item1'
}
$x += [pscustomobject]@{
'test2' = 'item2'
}
请注意,现在,我可以$x | fl
像往常一样编写和获取所有这些信息。
$x | fl
test : item1
test2 : item2
但是,使用 Get-Member 时,仅包含第一个对象。
$x | Get-Member -MemberType NoteProperty
Name MemberType Definition
---- ---------- ----------
test NoteProperty string test=item1
有人知道为什么是这样吗?我无法更改 JSON 结构。
解决方案
Get-Member
查看管道中的第一项(每种不同类型的)以确定要使用的属性集。
Out-GridView
和其他 cmdlet 喜欢Export-CSV
做同样的事情。
PSCustomObject
这与这些是s的事实无关。FileInfo
这是一个带有对象的示例:
$files = Get-ChildItem -Path C:\temp -File |
Select-Object -First 2
#Add a property to second item
$files[1] | Add-Member -MemberType NoteProperty -Name Test -Value 'hello world'
#doesn't show Test, because it wasn't in the first item
$files | Get-Member
$files2 = Get-ChildItem -Path C:\temp -File |
Select-Object -First 2
#add property to first item
$files2[0] | Add-Member -MemberType NoteProperty -Name Test -Value 'hello world'
#shows Test, because it was in the first item
$files2 | Get-Member
推荐阅读
- javascript - 如何在基于 TypeScript 的 React Native 应用程序中为导入配置绝对路径?
- javascript - 创建配置文件模型时出现环回 API 错误
- vue.js - VueJS - 导入组件时找不到模块问题
- selenium - 点击功能在 CRM 应用程序上一直无法正常工作
- javascript - 如何将 vanilla JS 应用于 Typewriter.js API 键入的每个字符?
- node.js - 在 express.js 的请求正文中读取 json 数组
- azure - 如何更新天蓝色应用注册应用属性?
- sql - 按逗号分隔的 nvchar id 过滤 id
- c# - Prism 消息上的 C# 异步等待
- java - 从 maven 文件夹结构的主/资源文件夹中选择文件时出现问题