下面的代码是早期版本,它与AzureRm一起使用
$registry = Get-AzContainerRegistry -ResourceGroupName "somenamee" -Name "acrcontainername"
$sp = Get-AzADServicePrincipal -ServicePrincipalName "............."
$role = New-AzRoleAssignment -ObjectId $sp.Id -RoleDefinitionName 'acrpull' -Scope $registry.Id
现在使用最新的Azure Module Az,它将不起作用。
New-AzRoleAssignment : Cannot validate argument on parameter 'ObjectId'. The argument is null or empty. Provide an
argument that is not null or empty, and then try the command again.
At line:1 char:40
+ $role = New-AzRoleAssignment -ObjectId $sp.Id -RoleDefinitionName $ro ...
+ ~~~~~~
+ CategoryInfo : InvalidData: (:) [New-AzRoleAssignment], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.Azure.Commands.Resources.NewAzureRoleAssignmentCommand
错误:
//*[@id="srp-river-results-listing1"]/div/div[2]/a/h3
答案 0 :(得分:0)
AzureRm我使用了用户名和密码,对于Az我使用了服务主体
如果将Azure Powershell与服务主体一起使用,则需要向服务主体授予权限。
有两个选项(您需要在AAD租户中以Global administrator
身份登录azure门户,我建议您使用选项2):
1。导航到Azure Active Directory
-> Roles and administrators
->单击Global administrator
-> Add assignments
->添加服务主体。
2。导航到Azure Active Directory
-> App registrations
->查找您的服务主体的AD App,并添加Application.ReadWrite.All
的{{1}}权限,如下所示。
在AAD中授予权限后,命令Azure Active Directory Graph
将起作用。要使用Get-AzADServicePrincipal -ApplicationId xxxxx
,您的服务主体应为订阅或ContainerRegistry中的New-AzRoleAssignment
。如果您没有赋予Owner
角色,它将无法分配角色分配。
以Owner
-> Owner
-> Access control (IAM)
-> Add
->在门户中导航到订阅或ContainerRegistry,将服务主体添加为{{ 1}},详细信息here。
答案 1 :(得分:0)
1。导航到Azure Active Directory->角色和管理员->单击全局管理员->添加分配->添加服务主体。
您不能将服务主体添加到全局管理员。
2。导航到Azure Active Directory->应用程序注册->找到您的服务主体的AD App并添加 Application.ReadWrite.Azure Active Directory图形的所有权限 如下所示。
我尝试添加以下权限:
Azure Active Directory图形
Microsoft Graph
Az模块4.7在Powershell 7下仍然具有Get-AzADServicePrincipal错误。