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

Powershell 从我的一台(客户端)计算机上执行Select AzureRmSubscription可以工作,但不能在另一台计算机上执行,powershell,azure,azure-powershell,Powershell,Azure,Azure Powershell,上下文 我有一个Microsoft帐户,一个我有和Azure订阅的帐户。我拥有对其他Microsoft帐户的其他订阅的访问权限(添加为user:owner) 一切正常,当我使用我唯一的凭证登录Azure门户时,我可以看到右上角菜单中列出的目录(租户?),因此我可以切换。切换到某个目录后,我可以看到该目录的订阅 我想在PowerShell中同样使用此凭据。到目前为止,我成功地使用了selectazurermsubscription,有趣的是,我体验到,即使订阅位于其他租户下作为默认目录,我也可以省

上下文

我有一个Microsoft帐户,一个我有和Azure订阅的帐户。我拥有对其他Microsoft帐户的其他订阅的访问权限(添加为user:owner)

一切正常,当我使用我唯一的凭证登录Azure门户时,我可以看到右上角菜单中列出的目录(租户?),因此我可以切换。切换到某个目录后,我可以看到该目录的订阅

我想在PowerShell中同样使用此凭据。到目前为止,我成功地使用了selectazurermsubscription,有趣的是,我体验到,即使订阅位于其他租户下作为默认目录,我也可以省略-tenantId参数。(我假设Select AzureRmSubscription迭代所有租户的所有订阅,以查找我在-SubscrptionId参数中提供的guid。(或者这只是一个“bug”?)。无论如何,现在我已经切换到另一台客户端计算机,并且新安装了AzureRM PowerShell模块,而相同的Select AzureRM Subscription在那里不起作用。因此,我认为此“错误”已“修复”,现在我也必须使用-TenantId参数。但是我仍然遇到错误

注意:我的旧开发人员计算机上的所有作品:我可以使用Select AzureRmSubscription(甚至不使用-TenantId参数)在不同租户的订阅之间切换

我所尝试的:

$subscriptionId = "42940206-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 
$tenantId = "ce8a477c-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId $subscriptionId -TenantId $tenanId 
我收到以下错误消息:

Set-AzureRmContext:无法验证参数“SubscriptionId”上的参数。参数“42940206-xxxx-xxxx-xxxx-xxxxxxxxxxxx”不正确 属于ValidateSet属性指定的集合“0692a8b8-xxxx-xxxx-xxxx-xxxxxxxxxxxx”。请提供集合中的参数,然后重试该命令

ValidateSet属性指定的“0692a8b8-xxxx-xxxx-xxxx-xxxxxxxxxxxx”是什么。它既不是我的订阅ID,也不是我的租户ID

两台客户端计算机之间的差异

  • 工作:Poweshell 5,大约有半年历史的AzureRM模块,由PowerShellGet的安装模块安装

  • 不工作:Poweshell 4,最新AzureRM模块,由PowerShellGet的安装模块安装


简单的下一步是在新机器上安装PowerShell 5,但它是一台生产机器,每天都在运行PowerShell脚本,因此我不想冒险破坏生产过程…

我遇到了类似的问题。我只是在订阅位于不同租户时遇到了这个问题美国

对我来说,解决方法是获取订阅对象,然后选择它。因此,使用上面的示例,如果您使用所需的订阅ID值设置了
$subscriptionId
,您应该执行以下操作:

Get-AzureRmSubscription -SubscriptionId $subscriptionId  | Select-AzureRmSubscription

在我使用的帐户有自己的azure订阅,但也被设置为另一订阅的管理员的情况下,这对我来说是有效的。