Azure Active Directory:使用PowerShell将服务主体添加到目录读取器角色 Azure PowerShell任务中的命令(Get-AzureRmADUser-Mail$user).Id在VSTS中的自托管代理上运行时返回null 问题是服务主体需要具有从Active Directory读取的权限

Azure Active Directory:使用PowerShell将服务主体添加到目录读取器角色 Azure PowerShell任务中的命令(Get-AzureRmADUser-Mail$user).Id在VSTS中的自托管代理上运行时返回null 问题是服务主体需要具有从Active Directory读取的权限,azure,powershell,azure-devops,azure-active-directory,service-principal,Azure,Powershell,Azure Devops,Azure Active Directory,Service Principal,如何向服务主体授予从Azure Active Directory读取的正确权限?先决条件 检查您是否具有从服务主体获取对象id的适当权限 检查您是否具有将服务主体添加到Azure Active Directory租户(->Admin)中的“目录读取器”角色的适当权限 台阶 通过安装模块AzureAD[1]安装Azure AD模块 连接到Azure Active Directory Connect AzureAD 获取“目录读取器”角色的Id $roleId=(获取AzureADDir

如何向服务主体授予从Azure Active Directory读取的正确权限?

先决条件
  • 检查您是否具有从服务主体获取对象id的适当权限
  • 检查您是否具有将服务主体添加到Azure Active Directory租户(->Admin)中的“目录读取器”角色的适当权限
台阶
  • 通过
    安装模块AzureAD
    [1]安装Azure AD模块

  • 连接到Azure Active Directory

    • Connect AzureAD
  • 获取“目录读取器”角色的Id

    • $roleId=(获取AzureADDirectoryRole | where对象{$\.DisplayName-eq“目录读取器”).Objectid
  • 获取服务主体对象ID

    • $spObjectId=(Get-AzureADServicePrincipal-SearchString“spName”).ObjectId
      • 当然,这仅在结果仅包含一个ObjectId时有效
      • 这不是在Azure Active Directory中注册的应用程序的ObjectId
  • 将服务主体添加到“目录读取器”角色

    • 添加AzureAddirectorRoleMember-ObjectId$roleId-ReObjectId$spObjectId
  • 检查SP是否已分配给目录读取器角色

    • 获取AzureADDirectoryRoleMember-ObjectId$roleId |其中Object{$\uU9.ObjectId-eq$spObjectId}
  • 如果要在稍后阶段从角色中删除服务主体

    • 删除AzureAddirectorRoleMember-ObjectId$roleId-MemberId$spObjectId
另见[2]

资源 [1]


[2]

这不是一个问题,你最好把它作为一篇博文!这里有这个有什么不好?它基于一个问题(为什么(getazurermaduser-Mail$user).Id返回null)并直接提供答案。不知道您的实际问题是什么。如果您投了反对票,请提供为什么我们有这些命令的azure cli版本的原因