New-AzureRmRoleAssignment:未将对象引用设置为对象的实例
New-AzureRmRoleAssignment : Object reference not set to an instance of an object
无法使用 New-AzureRmRoleAssignment
命令将角色分配给用户。当我 运行 上面的命令出现如下错误时。
New-AzureRmRoleAssignment : Object reference not set to an instance of an object.
任何人都可以帮助解决这个问题。
要在 运行 书中成功为用户分配角色,请按照以下步骤操作。
注意:您使用的New-AzureRmRoleAssignment
属于旧的AzureRM
,已弃用,不再更新。在我的示例中,我使用了新的 Az
command New-AzRoleAssignment
,我也推荐您使用它。
1.Navigate 到门户中的订阅(您需要在订阅中成为 Owner/User Access Administrator
)-> 将您的自动化 RunAs 帐户的服务主体添加为 Owner/User Access Administrator
(通过默认会在创建时添加为Contributor
,但是Contributor
没有权限运行 New-AzRoleAssignment
).
2.Navigate 到门户中的 Azure Active Directory
-> App registrations
-> 找到您的 RunAs 帐户的 AD 应用程序并添加 Directory.Read.All
Azure Active Directory Graph
(Not Microsoft Graph) 中的 application 权限如下所示,不要忘记最后单击 Grant admin consent for xxx
按钮(您需要成为 AAD 租户中的管理员角色)。权限可能需要大约 30 分钟才能生效。
3.Navigate 到门户中的自动化帐户 -> Modules
-> 确保你已经安装了 Az.Accounts
、Az.Resources
模块,如果没有,请转到Browse Gallery
,搜索名称,然后安装它们。
4.Then 在 运行 书中,使用下面的脚本,它在我这边工作正常。在我的示例中,我将用户添加为资源组 joyRG
中的 Reader
,您可以更改它,这取决于您的要求。
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
"Logging in to Azure..."
Connect-AzAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
$user = Get-AzADUser -UserPrincipalName joyw2@xxxx.onmicrosoft.com
New-AzRoleAssignment -ObjectId $user.id -ResourceGroupName joyRG -RoleDefinitionName Reader
无法使用 New-AzureRmRoleAssignment
命令将角色分配给用户。当我 运行 上面的命令出现如下错误时。
New-AzureRmRoleAssignment : Object reference not set to an instance of an object.
任何人都可以帮助解决这个问题。
要在 运行 书中成功为用户分配角色,请按照以下步骤操作。
注意:您使用的New-AzureRmRoleAssignment
属于旧的AzureRM
,已弃用,不再更新。在我的示例中,我使用了新的 Az
command New-AzRoleAssignment
,我也推荐您使用它。
1.Navigate 到门户中的订阅(您需要在订阅中成为 Owner/User Access Administrator
)-> 将您的自动化 RunAs 帐户的服务主体添加为 Owner/User Access Administrator
(通过默认会在创建时添加为Contributor
,但是Contributor
没有权限运行 New-AzRoleAssignment
).
2.Navigate 到门户中的 Azure Active Directory
-> App registrations
-> 找到您的 RunAs 帐户的 AD 应用程序并添加 Directory.Read.All
Azure Active Directory Graph
(Not Microsoft Graph) 中的 application 权限如下所示,不要忘记最后单击 Grant admin consent for xxx
按钮(您需要成为 AAD 租户中的管理员角色)。权限可能需要大约 30 分钟才能生效。
3.Navigate 到门户中的自动化帐户 -> Modules
-> 确保你已经安装了 Az.Accounts
、Az.Resources
模块,如果没有,请转到Browse Gallery
,搜索名称,然后安装它们。
4.Then 在 运行 书中,使用下面的脚本,它在我这边工作正常。在我的示例中,我将用户添加为资源组 joyRG
中的 Reader
,您可以更改它,这取决于您的要求。
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
"Logging in to Azure..."
Connect-AzAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
$user = Get-AzADUser -UserPrincipalName joyw2@xxxx.onmicrosoft.com
New-AzRoleAssignment -ObjectId $user.id -ResourceGroupName joyRG -RoleDefinitionName Reader