Azure active directory 如何获取已登录用户的Azure AD对象ID?

Azure active directory 如何获取已登录用户的Azure AD对象ID?,azure-active-directory,azure-resource-manager,Azure Active Directory,Azure Resource Manager,我试图调用一个ARM模板,该模板需要当前登录用户的PrincipalId 我已使用powershell作为组织AAD中的来宾帐户登录。 当我检查结果上下文时,我得到: Name : [sky.sigal@ministryof.me, 5f813400-5b93-43b0-af8f-5fd04714f1ef] Account : me@here.com SubscriptionName : SomeSubscriptionName TenantId

我试图调用一个ARM模板,该模板需要当前登录用户的PrincipalId

我已使用powershell作为组织AAD中的来宾帐户登录。 当我检查结果上下文时,我得到:

Name             : [sky.sigal@ministryof.me, 5f813400-5b93-43b0-af8f-5fd04714f1ef]
Account          : me@here.com
SubscriptionName : SomeSubscriptionName
TenantId         : e6d2d4cc-b762-486e-8894-4f5f540d5f31
Environment      : AzureCloud
我想知道如何从上面获得AAD ObjectId,而不用字符串解析“Name”

请注意,ARM模板的文档不是很清楚,因此不确定me@here.com也可以工作(我假设它是关于Guid的)

谢谢。

您可以尝试获取
对象ID

样本:

Get-AzureRmADUser -UserPrincipalName "xxxx@xxxx.com"
结果:

Id
ObjectId
,您可以得到它。此外,您还可以通过其他属性获取它,而不仅仅是
-UserPrincipalName
,只需参考命令的链接即可

更新

如果您使用
Guest
帐户,可以尝试下面的命令

Get-AzureADUser | ?{$_.UserType -eq "Guest"} | ?{$_.UserPrincipalName -like "*partofyouraccount*"}


注意:在使用此命令之前,您需要。

您也可以使用azure cli获取它

az ad signed-in-user show --query objectId -o tsv

使用Powershell cmdlet:

$myObjectId = (Get-AzADUser -UserPrincipalName (Get-AzContext).Account).Id
您看到的有关“名称”的信息与订阅相关。使用下面的命令获取“帐户”下的objectId:


我不是AAD方面的专家,但我发现我自己的个人Azure订阅与我的工作无关。对于以下命令,one会返回nothing

# does not work sometimes
(Get-AzADUser -UserPrincipalName (Get-AzContext).Account).Id
但是,我发现我可以使用Az CLI可靠地获取我的用户主体名称(UPN)和对象ID,以获取访问令牌,然后使用Microsoft Graph API返回每个用户信息

$token = Get-AzAccessToken -Resource "https://graph.microsoft.com/"
$headers = @{ Authorization = "Bearer $($token.Token)" }
Invoke-RestMethod https://graph.microsoft.com/v1.0/me -Headers $headers

该上下文对象的名称中似乎只包含一个字符串。。但是,也许还有其他cmdlet可以以更好的结构提供对象id?我的回答可以解决您的问题吗?如果是,请将其标记为答案。如果没有,请让我知道,非常感谢。这一定是一件正确的事情(我是该组织AAD的客户帐户)——而且什么也得不到。获取AzureRmADUser-UserPrincipalName“me@here.com“@user9314395请查看我的更新。如果它解决了您的问题,如果您能将其标记为答案,我们将不胜感激。
$token = Get-AzAccessToken -Resource "https://graph.microsoft.com/"
$headers = @{ Authorization = "Bearer $($token.Token)" }
Invoke-RestMethod https://graph.microsoft.com/v1.0/me -Headers $headers