上下文
我有一个Microsoft帐户,我有一个和Azure订阅它。我有访问权限(作为用户:所有者添加)到其他Microsoft帐户的其他订阅。
一切正常,当我使用我的唯一凭据登录Azure门户时,我可以看到右上方菜单中列出的目录(租户?),所以我可以切换。切换到目录后,我可以看到该目录的订阅。
我想在PowerShell中使用此凭据。到目前为止,我成功使用了Select-AzureRmSubscription,有趣的是我经历过,我可以省略-TenanttId参数,即使订阅也在其他租户下作为我的默认目录。 (我想Select-AzureRmSubscription会迭代所有租户的所有订阅,以找到我在-SubscrptionId参数中提供的guid。(或者这只是一个“bug”?)。无论如何,现在我已切换到另一台客户端计算机,并且刚刚安装了AzureRM PowerShell模块,同样的Select-AzureRmSubscription在那里不起作用。所以我认为这个“bug”已经“修复”了,现在我也必须使用-TenantId参数。但是我仍然有错误。
注意: 所有工作都来自我的旧开发者机器:我可以通过使用Select-AzureRmSubscription(甚至不使用-TenantId)在不同租户的订阅之间切换参数)
我尝试了什么:
SELECT s.[Date], x.Name
FROM dbo.t_Schedule s
INNER/*LEFT OUTER when column ProfID allows NULLs*/ JOIN dbo.t_Prof p ON s.ProfID = p.ID
LEFT OUTER JOIN dbo.t_Prof p1 ON s.ProfID1 = p1.ID
CROSS APPLY (
SELECT p.Name WHERE p.Name IS NOT NULL
UNION ALL
SELECT p1.Name WHERE p1.Name IS NOT NULL
) x(Name)
我收到以下错误消息:
Set-AzureRmContext:无法验证参数'SubscriptionId'的参数。参数“42940206-xxxx-xxxx-xxxx-xxxxxxxxxxxx”不 属于ValidateSet属性指定的集合“0692a8b8-xxxx-xxxx-xxxx-xxxxxxxxxxxx”。提供集合中的参数,然后再次尝试该命令。
这是什么069.a8b8-xxxx-xxxx-xxxx-xxxxxxxxxxxx“由ValidateSet属性指定。它既不是我的订阅ID,也不是我的tenantIds ......
两台客户端计算机之间的差异
工作:Poweshell 5,大约半年历史的AzureRM模块,由PowerShellGet的安装模块安装
不工作:Poweshell 4,最新的AzureRM模块,由PowerShellGet的安装模块安装
琐碎的下一步是在新机器上安装PowerShell 5,但它是一台生产机器,很多都是稳定的,并且日复一日地运行PowerShell脚本,所以我不想冒破坏生产过程的风险......
答案 0 :(得分:5)
我遇到了类似的问题。如果订阅位于不同的租户中,我只会遇到问题。
对我而言,治愈方法是获取订阅对象,然后选择它。因此,使用上面的示例,您可以$subscriptionId
设置您想要的订阅ID值,您可以这样做:
Get-AzureRmSubscription -SubscriptionId $subscriptionId | Select-AzureRmSubscription