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

如何将权限参数存入JSON并通过PowerShell读取循环执行角色分配?

1. 权限参数的JSON格式定义

创建一个JSON配置文件(示例命名为SynapseRoleAssignments.json),用数组结构存储所有权限分配条目,每个条目包含role、type、objectID核心字段,示例如下:

[
    {
        "role": "Synapse Administrator",
        "type": "Group",
        "objectID": "12345678-1234-1234-1234-1234567890ab"
    },
    {
        "role": "Synapse SQL Administrator",
        "type": "User",
        "objectID": "87654321-4321-4321-4321-ba0987654321"
    },
    {
        "role": "Synapse Contributor",
        "type": "ServicePrincipal",
        "objectID": "abcd1234-5678-90ef-ghij-klmnopqrstuv"
    }
]

如果需要统一指定目标Synapse工作区,也可以将工作区参数作为全局配置放在JSON顶层:

{
    "synapseWorkspaceName": "my-synapse-workspace",
    "roleAssignments": [
        {
            "role": "Synapse Administrator",
            "type": "Group",
            "objectID": "12345678-1234-1234-1234-1234567890ab"
        }
    ]
}
2. PowerShell脚本读取JSON并执行角色分配

编写PowerShell脚本读取JSON配置,循环提取字段并执行Azure Synapse角色分配操作,示例脚本如下:

# 指定JSON配置文件路径
$configPath = ".\SynapseRoleAssignments.json"

# 读取并解析JSON内容
$permissionConfig = Get-Content -Path $configPath -Raw | ConvertFrom-Json

# 循环处理每个权限分配条目(适配纯数组格式的JSON)
foreach ($assignment in $permissionConfig) {
    # 提取核心字段
    $roleName = $assignment.role
    $principalType = $assignment.type
    $principalId = $assignment.objectID
    # 替换为实际的Synapse工作区名称
    $workspaceName = "your-synapse-workspace-name"

    # 执行角色分配命令
    New-AzSynapseRoleAssignment `
        -WorkspaceName $workspaceName `
        -RoleDefinitionName $roleName `
        -PrincipalType $principalType `
        -PrincipalId $principalId

    # 输出执行日志
    Write-Host "已完成分配:角色 '$roleName' -> 主体ID $principalId"
}

# 若使用带全局工作区参数的JSON,替换循环部分为:
# foreach ($assignment in $permissionConfig.roleAssignments) {
#     $roleName = $assignment.role
#     $principalType = $assignment.type
#     $principalId = $assignment.objectID
#     $workspaceName = $permissionConfig.synapseWorkspaceName
#
#     New-AzSynapseRoleAssignment `
#         -WorkspaceName $workspaceName `
#         -RoleDefinitionName $roleName `
#         -PrincipalType $principalType `
#         -PrincipalId $principalId
#
#     Write-Host "已完成分配:角色 '$roleName' -> 主体ID $principalId"
# }

注意事项

  • 提前安装Azure Synapse PowerShell模块:Install-Module -Name Az.Synapse -Force,并完成Azure账号登录:Connect-AzAccount
  • 若需更新现有角色分配而非创建新分配,可将New-AzSynapseRoleAssignment替换为Set-AzSynapseRoleAssignment

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:05:10