Optimize the installation of Azure PowerShell

This article explores how to optimize the Azure PowerShell installation process by selectively installing only the modules you need using the Microsoft.PowerShell.PSResourceGet (PSResourceGet) PowerShell module, an improved package management solution introduced with PowerShell version 7.4.

Prerequisites

  1. On Windows systems, you must set the PowerShell execution policy to remote signed or less restrictive

    • Check the PowerShell execution policy:

      Get-ExecutionPolicy -List
      
    • Set the PowerShell execution policy to remote signed:

      Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
      

    For more information about execution policies, see about_Execution_Policies.

  2. Determine if the PSResourceGet PowerShell module is installed and install it if necessary. The PSResourceGet module provides improved capabilities for installing PowerShell resources, including Azure PowerShell modules. PSResourceGet is preinstalled with PowerShell version 7.4 or higher and is also supported in Windows PowerShell 5.1.

    • Determine if the PSResourceGet PowerShell module is installed.

      Get-Module -Name Microsoft.PowerShell.PSResourceGet -ListAvailable
      
    • Install the PSResourceGet PowerShell module.

      Install-Module -Name Microsoft.PowerShell.PSResourceGet -Repository PSGallery
      

The Az PowerShell module

Azure PowerShell is the product name for the collection of official Microsoft PowerShell modules for managing Azure resources. The Az PowerShell module is the current iteration of Azure PowerShell.

The Az PowerShell module is a wrapper module for Azure service-related PowerShell modules, usually one module per Azure service, such as Az.Compute, Az.Network, and Az.Storage. When you install the Az PowerShell module, you install all the generally available (GA) Azure PowerShell service-specific modules.

Each submodule of the Az PowerShell module depends on the Az.Accounts module, which provides the core authentication and account management capabilities for Azure PowerShell. When you use Install-Module (part of PowerShellGet) to install the Az PowerShell module, the Az.Accounts module is downloaded and installed for each submodule. This redundant download process increases the installation time.

PSResourceGet installs Az.Accounts only once, regardless of the number of submodules you install. This results in a faster, more efficient installation process.

Install-PSResource -Name Az

Install individual service-specific modules

Installing the entire Az PowerShell module with all the service-specific modules bundled together is convenient, but time-consuming and inefficient if you only use a subset of its commands. Installing the entire Az PowerShell module results in:

  • Longer installation times.
  • Increased storage requirements.
  • Unnecessary updates for modules you don't use.

You can streamline the process by installing only the service-specific modules you need. The combination of using PSResourceGet and installing only the modules you need dramatically reduces installation overhead.

The following example uses the Install-PSResource cmdlet to install the Az.Compute, Az.Network, Az.Resources, and Az.Storage PowerShell modules.

Install-PSResource -Name Az.Compute, Az.Network, Az.Resources, Az.Storage

The Az.Accounts module is also installed automatically, but only once.

Install all GA and preview modules

If you need all the general availability (GA) and preview versions of Az PowerShell modules, install the AzPreview module. The AzPreview PowerShell module mirrors the structure of the Az module but includes all GA and preview modules. For consistency, its version number is the same as the Az module.

The following example installs the AzPreview module using PSResourceGet.

Install-PSResource -Name AzPreview

Benefits of optimizing the installation process

By adopting a more selective and efficient installation process, you:

  • Reduce resource consumption: Install only what you need, saving disk space.
  • Improve performance: Avoid redundant downloads and streamline the setup process.
  • Stay agile: Update and maintain only the modules you actively use.

See also

Next steps

To learn more about managing your Azure resources with the Az PowerShell module, see Get Started with Azure PowerShell.