从 json 读取数组并传递给 Powershell 中的变量

dar*_*n25 6 powershell json

我正在尝试传递用户列表和角色,以便我可以使用 powershell 为用户分配角色。我想要一个 json 文件来包含此信息并具有以下内容:

[
   {
      "name":"User1",
      "roles":[
         "System Administrator",
         "System User"
      ]
   },
   {
      "name":"User2",
      "roles":[
         "System User"
      ]
   }
]
Run Code Online (Sandbox Code Playgroud)

我运行了以下 Powershell:

$json = Get-Content -Raw -Path C:\temp\ExampleJsonArray.json | ConvertFrom-Json
Run Code Online (Sandbox Code Playgroud)

这给了我:

name  roles                              
----  -----                              
User1 {System Administrator, System User}
User2 {System User}  
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 然后如何将这些值传递到一个函数中,该函数将循环遍历每个用户并循环遍历用户的每个角色,以便我可以运行允许我一次将每个角色分配给用户的 cmdlet?

add-RoleToUser $user $role
Run Code Online (Sandbox Code Playgroud)

以上只是一个基本示例。我期待更多的用户和角色,因此 json 文件将是管理和自动化此任务的最简单方法。

Jam*_* C. 6

使用foreach您可以循环遍历每个name并在该循环中遍历roles

$json | foreach {
    $user = $_.name
    $_.roles | foreach {
        $role = $_
        Write-Output "User: $user"
        Write-Output "Role: $role"
        #Add-RoleToUser $user $role
    }
}
Run Code Online (Sandbox Code Playgroud)
用户:用户1
角色:系统管理员
用户:用户1
角色:系统用户
用户:用户2
角色:系统用户