我尝试传入用户列表和角色,以便我可以使用PowerShell为用户分配角色。我想要一个json文件来包含这些信息并具有以下内容:
[
{
"name":"User1",
"roles":[
"System Administrator",
"System User"
]
},
{
"name":"User2",
"roles":[
"System User"
]
}
]
我运行了以下Powershell:
$json = Get-Content -Raw -Path C:\temp\ExampleJsonArray.json | ConvertFrom-Json
这给了我:
name roles
---- -----
User1 {System Administrator, System User}
User2 {System User}
我的问题是 - 我如何将这些值传递给一个函数,该函数将循环遍历每个用户并遍历用户的每个角色,因此我可以运行cmdlet,允许我将每个角色分配给一个用户。时间?
add-RoleToUser $user $role
以上只是一个基本的例子。我期待更多的用户和角色,所以尽管json文件是管理和自动执行此任务的最简单方法。
答案 0 :(得分:1)
使用foreach
,您可以遍历每个name
并在roles
$json | foreach {
$user = $_.name
$_.roles | foreach {
$role = $_
Write-Output "User: $user"
Write-Output "Role: $role"
#Add-RoleToUser $user $role
}
}
User: User1 Role: System Administrator User: User1 Role: System User User: User2 Role: System User
答案 1 :(得分:0)
拥有不同的迭代变量
ForEach ($User in $json){
"User: {0}" -f $User.name
ForEach ($Role in $User.roles){
" Role: {0}" -f $Role
}
}
示例输出:
User: User1
Role: System Administrator
Role: System User
User: User2
Role: System User
您还可以通过角色
从用户,角色和组构建新对象$UserRoles = ForEach ($User in $json){
ForEach ($Role in $User.roles){
[PSCustomObject]@{
User = $User.Name
Role = $Role
}
}
}
$UserRoles | Group Role
> $UserRoles | Group Role
Count Name Group
----- ---- -----
1 System Administrator {@{User=User1; Role=System Administrator}}
2 System User {@{User=User1; Role=System User}, @{User=User2; Role=System User}}