【发布时间】:2017-09-23 02:38:11
【问题描述】:
对于给定的 Azure 订阅,我想将自定义角色分配给服务主体。为了实现这一点,我首先检查订阅中是否存在自定义角色定义。如果角色不存在,我会更新角色定义的可分配范围以包含此订阅。当我尝试分配角色时,我间歇性地面临“RoleDefinitionDoesNotExist”错误。我该如何解决这个问题?
我的代码:
$roleDef = Get-AzureRmRoleDefinition -Name $azureRmRole
if($roleDef -eq $null)
{
Select-AzureRmSubscription -SubscriptionName $prodSubscription
#Role definition exists in $prodSubscription
$newRole = Get-AzureRmRoleDefinition -Name $azureRmRole
#$scope = '/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx'
$newRole.AssignableScopes.Add($scope)
$def = Set-AzureRmRoleDefinition -Role $newRole
# I have verified that role definition is updated
}
Select-AzureRmSubscription -SubscriptionName $SubscriptionName
New-AzureRmRoleAssignment -RoleDefinitionName $azureRmRole -ObjectId $SPNid -Scope $scope
错误:
New-AzureRmRoleAssignment:ID 为“xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx”的指定角色定义不存在。 在 C:\Untitled1.ps1:71 char:1 + 新 AzureRmRoleAssignment -RoleDefinitionName $azureRmRole -ObjectId ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [New-AzureRmRoleAssignment], CloudException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Resources.NewAzureRoleAssignmentCommand
【问题讨论】:
-
嗨,你能在 Azure 门户上找到你的自定义角色吗?您可以使用
New-AzureRmRoleDefinition创建自定义角色。 -
@Walter-MSFT 是的,我可以在 Azure 门户上找到自定义角色。
-
$azureRmRole值是您的自定义名称。在我的例子中,名字是Virtual Machine Power Manager,你确定它存在吗? -
奇怪的是,即使我得到了这个例外。我可以看到在 Azure 门户上完成的角色分配。
-
为了测试,您能否在 Portal 上为您的服务主体分配角色?我可以在我的实验室进行测试。
标签: azure azure-powershell azure-resource-manager