【发布时间】:2016-10-12 18:43:54
【问题描述】:
上下文
我有一个 Microsoft 帐户,我有一个 Azure 订阅。我拥有其他 Microsoft 帐户的其他订阅的访问权限(添加为用户:所有者)。
一切正常,当我使用我唯一的凭据登录 Azure 门户时,我可以看到右上方菜单中列出的目录(租户?),因此我可以切换。切换到目录后,我可以看到该目录的订阅。
我想在 PowerShell 中类似地使用此凭据。到目前为止,我成功使用了 Select-AzureRmSubscription,有趣的是我经历过,即使订阅位于其他租户下作为我的默认目录,我也可以省略 -TenanttId 参数。 (我想 Select-AzureRmSubscription 会遍历所有租户的所有订阅以找到我在 -SubscrptionId 参数中提供的 guid。(或者这只是一个“错误”?)。无论如何,现在我已经切换到另一台客户端计算机,并且新鲜安装了 AzureRM PowerShell 模块,但相同的 Select-AzureRmSubscription 在那里不起作用。所以我认为这个“错误”已“修复”,现在我也必须使用 -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 的 Install-Module 安装
不工作:Poweshell 4,最新的 AzureRM 模块,由 PowerShellGet 的 Install-Module 安装
下一步的简单步骤是在新机器上安装 PowerShell 5,但它是一台稳定的生产机器,每天都在运行 PowerShell 脚本,所以我不想冒险破坏生产过程......
【问题讨论】:
标签: powershell azure azure-powershell