You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell提取动态键JSON对象中的mailAddress值?

提取动态键JSON中的所有mailAddress到数组

没问题,这种顶层键动态变化的场景在PowerShell里很好处理,我给你两种实用的解决方案:

方法1:利用PSObject.Properties(兼容所有PowerShell版本)

首先把JSON字符串转换成PowerShell对象,然后通过PSObject.Properties获取所有顶层动态键对应的属性,再提取每个属性值里的mailAddress:

# 假设你的JSON内容已经存储在变量$jsonString中
$jsonObject = $jsonString | ConvertFrom-Json

# 提取所有mailAddress到数组
$mailAddresses = $jsonObject.PSObject.Properties.Value | Select-Object -ExpandProperty mailAddress

说明:

  • PSObject.Properties会返回顶层所有动态的aad.*键对应的属性集合
  • .Value获取每个属性对应的用户对象
  • Select-Object -ExpandProperty mailAddress会把每个用户对象的mailAddress值提取出来,自动组成数组

方法2:使用哈希表(PowerShell 7+ 推荐)

如果你用的是PowerShell 7或更高版本,可以用ConvertFrom-Json -AsHashtable参数直接把JSON转换成哈希表,处理起来更简洁:

# PowerShell 7+ 适用
$jsonHashtable = $jsonString | ConvertFrom-Json -AsHashtable

# 直接提取所有值中的mailAddress
$mailAddresses = $jsonHashtable.Values.mailAddress

说明:

  • 哈希表的.Values属性直接返回所有用户对象
  • 直接访问.mailAddress时,PowerShell会自动遍历所有对象并收集属性值为数组

验证结果

执行完上述代码后,你可以输出$mailAddresses查看结果:

$mailAddresses

输出会是:

Tom.Test@email.com
Dummy.May@mail.com

从文件读取JSON的情况

如果你的JSON内容存放在文件里,可以这样处理:

# 读取JSON文件并转换为对象
$jsonObject = Get-Content -Path "C:\path\to\your\data.json" -Raw | ConvertFrom-Json

# 提取mailAddress数组
$mailAddresses = $jsonObject.PSObject.Properties.Value.mailAddress

内容的提问来源于stack exchange,提问作者james

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:37:46