Set-AzContext在Azure Cloud Shell中工作,但在Azure PowerShell中不工作

eblbsuwk  于 2023-08-07  发布在  Shell
关注(0)|答案(4)|浏览(99)

当我执行以下命令时

Clear-AzureProfile
Connect-AzAccount -TenantID xxxxxxxxxxxxxxxxxxx
Set-AzContext -SubscriptionId xxxxxxxxxxxxxxxxxxx

字符串
Azure PowerShell中,我得到了这个错误。

Set-AzContext : Please provide a valid tenant or a valid subscription.
At line:6 char:1
+ Set-AzContext -SubscriptionId xxxxxxxxxxxxxxxxxxx


如果我在Azure Cloud Shell中运行相同的命令,它会工作。

Name        Account         SubscriptionName    Environment    TenantId         
xxxx        xxxxxxx         xxxx                 xxxx             xxxx


我从免费试用切换到按需付费订阅,并在两种环境中使用按需付费凭据,但它不起作用。有人能帮忙吗

u2nhd7ah

u2nhd7ah1#

关闭powershell并打开一个新的,或者使用Clear-AzContext,而不是Clear-AzureProfile。然后使用Connect-AzAccount -Tenant xxxxx -Subscription xxxxx,它应该可以工作。

4xy9mtcn

4xy9mtcn2#

如果您在同一租户中循环订阅,并且不想多次使用Connect-AzAccount登录,那么下面的方法可以帮助我在订阅之间切换:

Remove-AzContext -InputObject (Get-AzContext) -Force | Out-Null;
$sub = Set-AzContext -Subscription $_.SubscriptionName;

字符串
在添加Remove-AzContext语句之前,我看到Set-AzContext由于某种原因实际上没有将上下文切换到另一个订阅。

ndh0cuux

ndh0cuux3#

我曾经也有这个问题,我的解决方案是不同的,一个提供了在此之上。显然,在我们的Azure Cloud Shell中,我们有几个可用的上下文,因此,我们不必设置上下文(使用Set-AzContext),而是切换到一个或其他上下文(使用Select-AzContext
我可以使用

Get-AzContext -ListAvailable

字符串
然后使用

Select-AzContext -Name ...


例如,在脚本中,我使用以下单行命令切换到ID为$SubscriptionID的订阅:

Select-AzContext -name ((Get-AzContext -ListAvailable).Name -match $SubscriptionId)[0]


不优雅,但高效
我不知道为什么我们会处于这样的境地。也许是因为我们正在使用另一个租户的邀请帐户进行管理。
希望这能帮助到和我们处境相同的人。

zqry0prt

zqry0prt4#

我也有这个问题,只需要登录通过powershell与
Connect-AzAccount -租户$tenantId -订阅$subscriptionId

相关问题