我能够使用PowerShell对已创建的Azure AD资源进行身份验证,并且我是全局管理员。我执行此命令以通过AD进行身份验证
$AzureADCred = Get-Credential -Message "Cred to connect to AD"
Connect-AzureAD -Credential $AzureADCred
这将返回我的Account
,SubscriptionName
,TenantID
和AccountType
(用户),这似乎表明我的登录名与特定租户相关联。然后,我可以执行以下命令:
Get-AzureADCurrentSessionInfo
但是,我尝试过的所有其他AzureAD查询都失败了。这包括:
Get-AzureADUser -SearchString "XXX"
Get-AzureADCurrentSessionInfo
Get-AzureADtenantdetail
Get-AzureADDomain
错误消息状态(例如)
Get-AzureADDomain:执行GetDomains时发生错误
代码:Authentication_Unauthorized
消息:找不到用户
似乎我具有正确的管理特权,并且我已连接到正确的租户。为了执行这些命令,我还需要做什么?
我回去尝试添加tenantID,但没有成功。我不确定为什么这行得通,因为即使我在没有tenantID的情况下登录
Get-AzureADCurrentSessionInfo
返回acct和承租人,因此我的登录名似乎在初始登录时已与承租人正确关联。我可以看到,如果该登录名与多个租户相关联,这将是一个问题。 当我切换到我在AD中创建的用户时,它具有AD域xxx.onmicrosoft.com,并且将该用户设置为全局管理员,因此我可以执行所有其他用户ID失败的命令。即使两个用户都是全局管理员,也只有我的AD域中的用户才能执行这些命令。也许这不是不在AD域中的AD用户的众所周知的限制。也许我需要运行一个Powershell命令来赋予该用户其他特权? 更新-我还尝试使用Azure Cloud Shell复制此问题,但发现任何具有Global Admin特权的AD用户,无论其域如何,都可以执行AzureAD命令的范围。至此,我得出结论,我的本地Powershell安装存在问题,但我无法找到有关问题确切内容的任何文档。因此,现在,当遇到此问题时,我建议在与AD处于同一域的Global Admin User ID下运行AzureAD命令的解决方法。
答案 0 :(得分:1)
我可以重现您的问题,我想您正在使用Guest
用户帐户,例如xxx@hotmail.com
,如果您Connect-AzureAD
没有参数-TenantId
,则默认情况下它不会像xxx.onmicrosoft.com
那样登录承租人。
要解决此问题,您的命令应为Connect-AzureAD -Credential $AzureADCred -TenantId "<your TenantId>"
,然后它将起作用。
答案 1 :(得分:0)
如果您使用Microsoft帐户,它将无法使用。您需要创建一个新的Azure AD帐户并分配Global admin角色,如果可能的话,还需要分配User access Admin角色。这为我解决了这个问题