我想知道创建执行以下操作的单个PowerShell脚本的最佳方法:

  1. 使用以下方法(或其他方法)获取AAD组成员的邮箱地址,并将其转换为Json对象
$AADGroup = "ExampleGroup1"

Get-AzureADGroup -SearchString $AADGroup | Get-AzureADGroupMember | Select Mail | ConvertTo-Json

以上命令的输出如下所示:

[
    {
        "Mail":  "user1@example.com"
    },
    {
        "Mail":  "user2@example.com"
    }
]
  1. 现在这很好,但是如果我想通过添加一个新用户来更新这个Json文件/对象,假设‘user3@example.com’作为字符串数组中的元素,如下所示?
$UserName = @('user3@example.com')

有这种方法,我想还有另一种方法,在使用ConvertTo-Json之前,您可以将新用户添加为查询命令的一部分?不确定哪种方法效果最好.

谢谢.

推荐答案

您可以使用通过call operator(&)调用的单个script block({ ... })来输出原始用户的地址和要添加的地址,两者都是具有.Mail属性的单个属性对象,然后将组合结果转换为JSON:

& {
  param([string[]] $User)

  # Output the existing users (email addresses) as objects with a .Mail property.
  Get-AzureADGroup -SearchString $AADGroup | Get-AzureADGroupMember | Select-Object Mail

  # Convert the array of users (email addresses) to objects with a .Mail property.
  $User | ForEach-Object { [pscustomobject] @{ Mail = $_ } }

} -User @('user3@example.com', 'user4@example.com') | 
  ConvertTo-Json

只处理对象和then转换为JSON比首先部分转换为JSON,然后try 更新JSON(PowerShell不提供直接支持)更可取.

Json相关问答推荐

使用JSONata将具有相同键的字典合并

Swift解码错误类型与`Bool`type不一致

从Razor Pages的AJAX Json呈现DataTables问题.Net GET

删除JSON文件的特定内容

抓取低于w jolt的对象级别

将JSON输入子数组转换为字符串顺序列表输出

如何在Swift中使用JSON编码器的泛型

在Ruby的json中压缩单个字段

Oracle Apex - 将 JSON 对象分配给变量以返回

jq:用列表包装所有第一级原子值

Flutter:在本地文件 json 中搜索特殊的阿拉伯字符

PowerShell - 如何迭代 PSCustomObject 嵌套对象?

ASP.NET MVC - 将 Json 结果与 ViewResult 结合起来

没有很多类的 GSON 解析

如何使用 Swift 从 NSURLSession 获取 cookie?

json和空数组

使用 jq 从 bash 中管道分隔的键和值创建 JSON

如何自动修复无效的 JSON 字符串?

为什么 JavaScript 的 eval 需要括号来判断 JSON 数据?

如何从 MVC 控制器返回 Json 对象以查看