执行Select-AzureRmSubscription可以从我的一台(客户端)计算机上运行,​​但不能在另一台计算机上运行

时间:2016-06-12 06:12:37

标签: powershell azure azure-powershell

上下文

我有一个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脚本,所以我不想冒破坏生产过程的风险......

1 个答案:

答案 0 :(得分:5)

我遇到了类似的问题。如果订阅位于不同的租户中,我只会遇到问题。

对我而言,治愈方法是获取订阅对象,然后选择它。因此,使用上面的示例,您可以$subscriptionId设置您想要的订阅ID值,您可以这样做:

Get-AzureRmSubscription -SubscriptionId $subscriptionId  | Select-AzureRmSubscription
相关问题