Azure CLI:从用户名或电子邮件地址获取对象 ID

4

我想通过Azure CLI自动检测当前用户的oid,以便对我的应用程序数据执行查询。如果我使用命令account show,我会得到以下结果:

azure account show
info:    Executing command account show
data:    Name                        : Visual Studio Enterprise
data:    ID                          : 12345678-1234-1234-1234-123456789012
data:    State                       : Enabled
data:    Tenant ID                   : abcdef12-abcd-1234-abcd-1234abcd1234
data:    Is Default                  : true
data:    Environment                 : AzureCloud
data:    Has Certificate             : No
data:    Has Access Token            : Yes
data:    User name                   : peter.parker@outlook.com
data:
info:    account show command OK

看一下peter.parker@outlook.com。现在如果我使用ad user list命令,我会得到以下结果:

azure ad user list
info:    Executing command ad user list
\data:    Object Id:       9123abcd-ffee-dafa-d0fa-abacfede1234
data:    Principal Name:  peter_parker_outlook.com#EXT#@peter_parkeroutlook.onmicrosoft.com
data:    Display Name:    Peter Parker
data:    E-Mail:
data:
+
info:    ad user list command OK

主要名称为peter_parker_outlook.com#EXT#@peter_parkeroutlook.onmicrosoft.com,但不匹配。

有什么办法可以获取当前用户的对象ID吗?


您正在使用 Live ID,我可以看到主体名称遵循将主体名称命名策略应用于 Live ID。为什么您说它不匹配? - Jack Zeng
4个回答

2
这是我通过电子邮件地址获取用户objectId的方法:
az ad user list --filter "mail eq 'first.last@acme.com'" --query "[].id" -o tsv

或者与当前的 Az CLI 上下文结合使用 - 当用户登录时:

az ad user list --filter "mail eq '$(az account show --query user.name -o tsv)'" --query "[0].id" -o tsv

使用的 Azure CLI 版本为:2.34.1。

2

您可以通过 PowerShell cmdlets 获取当前用户的对象 ID。

$msolcred = Get-Credential
Connect-MsolService -Credential $msolcred
$user = Get-MsolUser -UserPrincipalName peter.parker@outlook.com
($user).ObjectId

请注意,在运行上述PowerShell之前,您需要先从Microsoft下载中心安装面向IT专业人员的Microsoft在线服务登录助手RTW。然后安装Azure Active Directory Module for Windows PowerShell(64位版本),并单击“运行”以运行安装程序包。
请参考https://msdn.microsoft.com/en-us/library/azure/b7727a57-b002-4d84-a20c-3192b1d6b1b4#BKMK_ManageUsers获取指导。

1

现在有一个更简单的方法,可以使用Azure CLI和"id"参数直接获取数据,比其他答案更加方便。

MY_ID=$(az ad user show --id user@email.com | jq -r .id)

0

我认为你无法这样做。你所提到的 Microsoft 账户身份验证是“消费者”账户,至少在外部上与 Azure AD 没有任何关联。为了能够做到你试图做的事情,我认为你可以尝试将机器加入域或使用 AAD 凭据而不是 Microsoft 账户来进行 Azure 身份验证。我强烈怀疑没有办法获取到你在问题中提到的用户的 OID(即使 MS Account 中存在且可用于外部)。

因此,请尝试仅使用 AAD 用户来处理你的情况,而非 Microsoft 账户。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接