Set-AzContext 在 Azure Cloud Shell 中有效,但在 Azure PowerShell 中无效
Set-AzContext works in Azure Cloud Shell but doesn't in Azure PowerShell
当我执行以下命令时
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
我从免费试用切换到即用即付订阅,并在这两种环境中使用即用即付凭据,但它不起作用。谁能帮忙
关闭您的 powershell 并打开一个新的,或者使用 Clear-AzContext
,而不是 Clear-AzureProfile
。然后使用Connect-AzAccount -Tenant xxxxx -Subscription xxxxx
,应该可以了。
如果您在同一个租户中循环订阅并且不想多次使用 Connect-AzAccount
登录,我可以使用以下方法在订阅之间切换:
Remove-AzContext -InputObject (Get-AzContext) -Force | Out-Null;
$sub = Set-AzContext -Subscription $_.SubscriptionName;
在添加 Remove-AzContext
语句之前,我发现 Set-AzContext
出于某种原因实际上并未将上下文切换到另一个订阅。
我以前也有这个问题,我的解决方案与在此之上提供的解决方案不同。
显然,在我们的 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]
不优雅,但高效
我不知道我们为什么会这样。可能是因为我们正在使用其他租户的受邀帐户进行管理。
希望这对处境与我们相同的人有所帮助。
当我执行以下命令时
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
我从免费试用切换到即用即付订阅,并在这两种环境中使用即用即付凭据,但它不起作用。谁能帮忙
关闭您的 powershell 并打开一个新的,或者使用 Clear-AzContext
,而不是 Clear-AzureProfile
。然后使用Connect-AzAccount -Tenant xxxxx -Subscription xxxxx
,应该可以了。
如果您在同一个租户中循环订阅并且不想多次使用 Connect-AzAccount
登录,我可以使用以下方法在订阅之间切换:
Remove-AzContext -InputObject (Get-AzContext) -Force | Out-Null;
$sub = Set-AzContext -Subscription $_.SubscriptionName;
在添加 Remove-AzContext
语句之前,我发现 Set-AzContext
出于某种原因实际上并未将上下文切换到另一个订阅。
我以前也有这个问题,我的解决方案与在此之上提供的解决方案不同。
显然,在我们的 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]
不优雅,但高效
我不知道我们为什么会这样。可能是因为我们正在使用其他租户的受邀帐户进行管理。
希望这对处境与我们相同的人有所帮助。