Azure CLI 2.0: List and Set Azure Subscription

Chris Pietschmann Chris Pietschmann on Jun 28, 2019

To list and set the Azure Subscription to run Azure CLI commands against is an important step in command-line scripting. To do this, there are a couple important commands used to list the Azure Subscriptions your login has access to, view which subscription the CLI is currently scoped to, and set / change the subscription the CLI is scoped to.

While these commands are generally pretty simple to execute, they are extremely important to use. If you don't set the scope (or context) of the Azure CLI to the correct Azure Subscription then you might provision, delete, or modify resources in the wrong subscription. This would be a really big problem!

Show Selected Azure Subscription

Before running any Azure CLI commands, you need to verify that you have the CLI's context set to the Azure Subscription you intend to run commands against. If your login only has access to a single Azure Subscription, then this isn't a problem. However, if your login has access to multiple Azure Subscriptions, then this is a very important thing to do.

To view which Azure Subscription the Azure CLI's context is currently set to target, run the following command:

az account show

Notice that the Azure CLI commands refer to the Azure Subscription as an account. This will define the base (or prefix) command for working with Azure Subscriptions as az account.

When the az account show command is executed, you'll see a JSON response written to the terminal with information about the specific Azure Subscription the Azure CLI is currently set to work with:

JSON result displaying which Azure Subscription is currently set.

List Azure Subscriptions

You first need to know some details about your Azure Subscriptions in order to update the Azure Subscription the Azure CLI's context is set to. The specific detail you need to know are the id or name of your Azure Subscriptions. When you use the az account list Azure CLI command, the terminal response will be JSON that contains this information about all the Azure Subscriptions your current login has access to.

To view a list of all the Azure Subscriptions you have access to, run the following command:

az account list

This command will list out the details for all the Azure Subscriptions you have access to within Microsoft Azure regardless if you have access to 1, 2 or many more.

JSON result listing all Azure Subscriptions

You can see the JSON output contains a few different values, like the tenantId of Azure AD, the user you're logged in with, and the cloudName for which type of Azure cloud that Azure Subscription resides in. While these are useful values for other uses, only the name and id are necessary for verifying and setting which Azure Subscription you want to run Azure CLI commands against.

Set Azure Subscription to Target

Once you know which Azure Subscription you need to scope the Azure CLI context to, or which Azure Subscirption you want to run commands against, then you will set the Azure CLI to use that subscription.

To set the Azure Subscription you want to target with Azure CLI commands, you will run the following command to tell it explicitly which subscription you wish to target:

# Set subscription by Id
az account set --subscription XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

# Set subscription by Name
az account set --subscription "Company Subscription"

Be sure to replace the placeholders in the above examples with the actual id or name for the Azure Subscription to target that was returned from the previous az account list command.

When az account set command executed successfully, then the terminal will not return a response. So it's important that you run the az account show command afterwards to verify the Azure CLI is set to the correct subscription before running other commands.

If there is an error setting the Azure CLI to a specific subscription, then an error message will be returned. Here is an example error for specifying an Azure Subscription that does not exist.

Error message returned if az account set failed.