Set-AzContext works in Azure Cloud Shell but doesn't in Azure PowerShell

Viewed 10785

When i execute following command

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

in Azure PowerShell i get this error.

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

and if i run the same command in Azure Cloud Shell it works

Name        Account         SubscriptionName    Environment    TenantId         
xxxx        xxxxxxx         xxxx                 xxxx             xxxx

I switched from free-trial to pay-as-you-go subscription and using credentials for pay-as-you-go in both environment but it doesn't work. can anyone help

3 Answers

Close your powershell and open a new one, or use Clear-AzContext, not Clear-AzureProfile. Then use Connect-AzAccount -Tenant xxxxx -Subscription xxxxx, it should work.

If you are cycling through subscriptions in the same tenant and don't want to have to sign in with Connect-AzAccount multiple times, the following worked for me to switch between subscriptions:

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

Before adding the Remove-AzContext statement I was seeing that Set-AzContext was not actually switching the context to another subscription for some reason.

I used to have this problem too, and my solution was different that one provided on top of this. Apparently, in our Azure Cloud Shell, we have several contexts available, so, we don't have to set the context (using Set-AzContext), but to switch to one or other context, using Select-AzContext)

I can list the contexts using

Get-AzContext -ListAvailable

Then choose one using the

Select-AzContext -Name ...

For-example, in scripts, I use this one-line command to switch to the subscription having ID $SubscriptionID :

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

Not elegant, but efficient

I don't know why we are in such situation. Maybe because we are administrating using invited accounts from another tenant.

Hope this help someone in same situation than us.

Related