Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This document provides detailed information on the changes between AzureRM 6.x and the new Az module, version 1.x and later. The table of contents will help guide you through a full migration path, including module-specific changes that may affect your scripts.
For general advice on getting started with a migration from AzureRM to Az, see Start migration from AzureRM to Az.
Important
There have been breaking changes between Az 1.0.0 and Az 2.0.0 as well. After following this guide for updating from AzureRM to Az, see the Az 2.0.0 breaking changes to find out if you need to make additional changes.
Table of Contents
- General breaking changes
- Module breaking changes
- Az.ApiManagement (previously AzureRM.ApiManagement)
- Az.Billing (previously AzureRM.Billing, AzureRM.Consumption, and AzureRM.UsageAggregates)
- Az.CognitiveServices (previously AzureRM.CognitiveServices)
- Az.Compute (previously AzureRM.Compute)
- Az.DataFactory (previously AzureRM.DataFactories and AzureRM.DataFactoryV2)
- Az.DataLakeAnalytics (previously AzureRM.DataLakeAnalytics)
- Az.DataLakeStore (previously AzureRM.DataLakeStore)
- Az.KeyVault (previously AzureRM.KeyVault)
- Az.Media (previously AzureRM.Media)
- Az.Monitor (previously AzureRM.Insights)
- Az.Network (previously AzureRM.Network)
- Az.OperationalInsights (previously AzureRM.OperationalInsights)
- Az.RecoveryServices (previously AzureRM.RecoveryServices, AzureRM.RecoveryServices.Backup, and AzureRM.RecoveryServices.SiteRecovery)
- Az.Resources (previously AzureRM.Resources)
- Az.ServiceFabric (previously AzureRM.ServiceFabric)
- Az.Sql (previously AzureRM.Sql)
- Az.Storage (previously Azure.Storage and AzureRM.Storage)
- Az.Websites (previously AzureRM.Websites)
General breaking changes
This section details the general breaking changes that are part of the redesign of the Az module.
Cmdlet Noun Prefix Changes
In the AzureRM module, cmdlets used either AzureRM or Azure as a noun prefix. Az simplifies and normalizes cmdlet names, so that all cmdlets use 'Az' as their cmdlet noun prefix. For example:
Get-AzureRMVM
Get-AzureKeyVaultSecret
Has changed to:
Get-AzVM
Get-AzKeyVaultSecret
To make the transition to these new cmdlet names simpler, Az introduces two new cmdlets, Enable-AzureRmAlias and Disable-AzureRmAlias. Enable-AzureRmAlias creates aliases for the older cmdlet names in AzureRM that map to the newer Az cmdlet names. Using the -Scope argument with Enable-AzureRmAlias allows you to choose where aliases are enabled.
For example, the following script in AzureRM:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Can be run with minimal changes using Enable-AzureRmAlias:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Running Enable-AzureRmAlias -Scope CurrentUser will enable the aliases for all PowerShell sessions you open, so that after executing this cmdlet, a script like this would not need to be changed at all:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
For complete details on the usage of the alias cmdlets, see the Enable-AzureRmAlias reference.
When you're ready to disable aliases, Disable-AzureRmAlias removes the created aliases. For complete details,
see the Disable-AzureRmAlias reference.
Important
When disabling aliases, make sure that they are disabled for all scopes which had aliases enabled.
Module Name Changes
The module names have changed from AzureRM.* to Az.*, except for the following modules:
| AzureRM module | Az module |
|---|---|
| Azure.Storage | Az.Storage |
| Azure.AnalysisServices | Az.AnalysisServices |
| AzureRM.Profile | Az.Accounts |
| AzureRM.Insights | Az.Monitor |
| AzureRM.DataFactories | Az.DataFactory |
| AzureRM.DataFactoryV2 | Az.DataFactory |
| AzureRM.RecoveryServices.Backup | Az.RecoveryServices |
| AzureRM.RecoveryServices.SiteRecovery | Az.RecoveryServices |
| AzureRM.Tags | Az.Resources |
| AzureRM.MachineLearningCompute | Az.MachineLearning |
| AzureRM.UsageAggregates | Az.Billing |
| AzureRM.Consumption | Az.Billing |
The changes in module names mean that any script that uses #Requires or Import-Module to load specific modules will need to be changed to use the new module instead. For modules where the cmdlet suffix has not changed,
this means that although the module name has changed, the suffix indicating the operation space has not.
Migrating #Requires and Import-Module Statements
Scripts that use #Requires or Import-Module to declare a dependency on AzureRM modules must be updated to use the new module names. For example:
#Requires -Module AzureRM.Compute
Should be changed to:
#Requires -Module Az.Compute
For Import-Module:
Import-Module -Name AzureRM.Compute
Should be changed to:
Import-Module -Name Az.Compute
Migrating Fully-Qualified Cmdlet Invocations
Scripts that use module-qualified cmdlet invocations, such as:
AzureRM.Compute\Get-AzureRmVM
Must be changed to use the new module and cmdlet names:
Az.Compute\Get-AzVM
Migrating module manifest dependencies
Modules that express dependencies on AzureRM modules through a module manifest (.psd1) file will need to updated the module names in their RequiredModules section:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
Must be changed to:
RequiredModules = @(@{ModuleName="Az.Profile"; ModuleVersion="1.0.0"})
Removed modules
The following modules have been removed:
AzureRM.BackupAzureRM.Compute.ManagedServiceAzureRM.Scheduler
The tools for these services are no longer actively supported. Customers are encouraged to move to alternative services as soon as it is convenient.
Windows PowerShell 5.1 and .NET 4.7.2
Using Az with PowerShell 5.1 for Windows requires the installation of .NET Framework 4.7.2. Using PowerShell Core 6.x or later does not require .NET Framework.
Temporary removal of User login using PSCredential
Due to changes in the authentication flow for .NET Standard, we are temporarily removing user login via PSCredential. This capability will be re-introduced in the 1/15/2019 release for PowerShell 5.1 for Windows. This is discussed in detail in this GitHub issue.
Default device code login instead of web browser prompt
Due to changes in the authentication flow for .NET Standard, we are using device login as the default login flow during interactive login. Web browser based login will be re-introduced for PowerShell 5.1 for Windows as the default in the 1/15/2019 release. At that time, users will be able to choose device login using a Switch parameter.
Module breaking changes
This section details specific breaking changes for individual modules and cmdlets.
Az.ApiManagement (previously AzureRM.ApiManagement)
- Removed the following cmdlets:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- Use Set-AzApiManagement cmdlet to set these properties instead
- Removed the following properties:
- Removed property
PortalHostnameConfiguration,ProxyHostnameConfiguration,ManagementHostnameConfigurationandScmHostnameConfigurationof typePsApiManagementHostnameConfigurationfromPsApiManagementContext. Instead usePortalCustomHostnameConfiguration,ProxyCustomHostnameConfiguration,ManagementCustomHostnameConfigurationandScmCustomHostnameConfigurationof typePsApiManagementCustomHostNameConfiguration. - Removed property
StaticIPsfrom PsApiManagementContext. The property has been split intoPublicIPAddressesandPrivateIPAddresses. - Removed required property
Locationfrom New-AzureApiManagementVirtualNetwork cmdlet.
- Removed property
Az.Billing (previously AzureRM.Billing, AzureRM.Consumption, and AzureRM.UsageAggregates)
- The
InvoiceNameparameter was removed from theGet-AzConsumptionUsageDetailcmdlet. Scripts will need to use other identity parameters for the invoice.
Az.CognitiveServices (previously AzureRM.CognitiveServices)
- Removed
GetSkusWithAccountParamSetNameparameter set fromGet-AzCognitiveServicesAccountSkuscmdlet. You must get Skus by Account Type and Location, instead of using ResourceGroupName and Account Name.
Az.Compute (previously AzureRM.Compute)
IdentityIdsare removed fromIdentityproperty inPSVirtualMachineandPSVirtualMachineScaleSetobjects Scripts should no longer use the value of this field to make processing decisions.- The type of
InstanceViewproperty ofPSVirtualMachineScaleSetVMobject is changed fromVirtualMachineInstanceViewtoVirtualMachineScaleSetVMInstanceView AutoOSUpgradePolicyandAutomaticOSUpgradeproperties are removed fromUpgradePolicyproperty- The type of
Skuproperty inPSSnapshotUpdateobject is changed fromDiskSkutoSnapshotSku VmScaleSetVMParameterSetis removed fromAdd-AzVMDataDiskcmdlet, you can no longer add a data disk individually to a ScaleSet VM.
Az.DataFactory (previously AzureRM.DataFactories and AzureRM.DataFactoryV2)
- The
GatewayNameparameter has become mandatory in theNew-AzDataFactoryEncryptValuecmdlet - Removed
New-AzDataFactoryGatewayKeycmdlet - Removed
LinkedServiceNameparameter fromGet-AzDataFactoryV2ActivityRuncmdlet Scripts should no longer use the value of this field to make processing decisions.
Az.DataLakeAnalytics (previously AzureRM.DataLakeAnalytics)
- Removed deprecated cmdlets:
New-AzDataLakeAnalyticsCatalogSecret,Remove-AzDataLakeAnalyticsCatalogSecret, andSet-AzDataLakeAnalyticsCatalogSecret
Az.DataLakeStore (previously AzureRM.DataLakeStore)
The following cmdlets have had the
Encodingparameter changed from the typeFileSystemCmdletProviderEncodingtoSystem.Text.Encoding. This change removes the encoding valuesStringandOem. All the other prior encoding values remain.- New-AzureRmDataLakeStoreItem
- Add-AzureRmDataLakeStoreItemContent
- Get-AzureRmDataLakeStoreItemContent
Removed deprecated
Tagsproperty alias fromNew-AzDataLakeStoreAccountandSet-AzDataLakeStoreAccountcmdletsScripts using
New-AzureRMDataLakeStoreAccount -Tags @{TagName="TagValue"}Should be changed to
New-AzDataLakeStoreAccount -Tag @{TagName="TagValue"}Removed deprecated properties
Identity,EncryptionState,EncryptionProvisioningState,EncryptionConfig,FirewallState,FirewallRules,VirtualNetworkRules,TrustedIdProviderState,TrustedIdProviders,DefaultGroup,NewTier,CurrentTier,FirewallAllowAzureIpsfromPSDataLakeStoreAccountBasicobject. Any script that uses thePSDatalakeStoreAccountreturned fromGet-AzDataLakeStoreAccountshould not reference these properties.
Az.KeyVault (previously AzureRM.KeyVault)
- The
PurgeDisabledproperty was removed from thePSKeyVaultKeyAttributes,PSKeyVaultKeyIdentityItem, andPSKeyVaultSecretAttributesobjects Scripts should no longer reference thePurgeDisabledproperty to make processing decisions.
Az.Media (previously AzureRM.Media)
Remove deprecated
Tagsproperty alias fromNew-AzMediaServicecmdlet Scripts usingNew-AzureRMMediaService -Tags @{TagName="TagValue"}Should be changed to
New-AzMediaService -Tag @{TagName="TagValue"}
Az.Monitor (previously AzureRM.Insights)
Removed plural names
CategoriesandTimegrainsparameter in favor of singular parameter names fromSet-AzDiagnosticSettingcmdlet Scripts usingSet-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2Should be changed to
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network (previously AzureRM.Network)
- Removed deprecated
ResourceIdparameter fromGet-AzServiceEndpointPolicyDefinitioncmdlet - Removed deprecated
EnableVmProtectionproperty fromPSVirtualNetworkobject - Removed deprecated
Set-AzVirtualNetworkGatewayVpnClientConfigcmdlet
Scripts should no longer make processing decisions based on the values fo these fields.
Az.OperationalInsights (previously AzureRM.OperationalInsights)
Default parameter set for
Get-AzOperationalInsightsDataSourceis removed, andByWorkspaceNameByKindhas become the default parameter setScripts that listed data sources using
Get-AzureRmOperationalInsightsDataSourceShould be changed to specify a Kind
Get-AzOperationalInsightsDataSource -Kind AzureActivityLog
Az.RecoveryServices (previously AzureRM.RecoveryServices, AzureRM.RecoveryServices.Backup, and AzureRM.RecoveryServices.SiteRecovery)
- Removed
Encryptionparameter fromNew/Set-AzRecoveryServicesAsrPolicycmdlet TargetStorageAccountNameparameter is now mandatory for managed disk restores inRestore-AzRecoveryServicesBackupItemcmdlet- Removed
StorageAccountNameandStorageAccountResourceGroupNameparameters inRestore-AzRecoveryServicesBackupItemcmdlet - Removed
Nameparameter inGet-AzRecoveryServicesBackupContainercmdlet
Az.Resources (previously AzureRM.Resources)
Removed
Skuparameter fromNew/Set-AzPolicyAssignmentcmdletRemoved
Passwordparameter fromNew-AzADServicePrincipalandNew-AzADSpCredentialcmdlet Passwords are automatically generated, scripts that provided the password:New-AzAdSpCredential -ObjectId 00001111-aaaa-2222-bbbb-3333cccc4444 -Password $secPasswordShould be changed to retrieve the password from the output:
$credential = New-AzAdSpCredential -ObjectId 00001111-aaaa-2222-bbbb-3333cccc4444 $secPassword = $credential.Secret
Az.ServiceFabric (previously AzureRM.ServiceFabric)
- The following cmdlet return types have been changed:
- The property
ServiceTypeHealthPoliciesof typeApplicationHealthPolicyhas been removed. - The property
ApplicationHealthPoliciesof typeClusterUpgradeDeltaHealthPolicyhas been removed. - The property
OverrideUserUpgradePolicyof typeClusterUpgradePolicyhas been removed. - These changes affect the following cmdlets:
- Add-AzServiceFabricClientCertificate
- Add-AzServiceFabricClusterCertificate
- Add-AzServiceFabricNode
- Add-AzServiceFabricNodeType
- Get-AzServiceFabricCluster
- Remove-AzServiceFabricClientCertificate
- Remove-AzServiceFabricClusterCertificate
- Remove-AzServiceFabricNode
- Remove-AzServiceFabricNodeType
- Remove-AzServiceFabricSetting
- Set-AzServiceFabricSetting
- Set-AzServiceFabricUpgradeType
- Update-AzServiceFabricDurability
- Update-AzServiceFabricReliability
- The property
Az.Sql (previously AzureRM.Sql)
- Removed
StateandResourceIdparameters fromSet-AzSqlDatabaseBackupLongTermRetentionPolicycmdlet - Removed deprecated cmdlets:
Get/Set-AzSqlServerBackupLongTermRetentionVault,Get/Start/Stop-AzSqlServerUpgrade,Get/Set-AzSqlDatabaseAuditingPolicy,Get/Set-AzSqlServerAuditingPolicy,Remove-AzSqlDatabaseAuditing,Remove-AzSqlServerAuditing - Removed deprecated parameter
CurrentfromGet-AzSqlDatabaseBackupLongTermRetentionPolicycmdlet - Removed deprecated parameter
DatabaseNamefromGet-AzSqlServerServiceObjectivecmdlet - Removed deprecated parameter
PrivilegedLoginfromSet-AzSqlDatabaseDataMaskingPolicycmdlet
Az.Storage (previously Azure.Storage and AzureRM.Storage)
- To support creating an Oauth storage context with only the storage account name, the default parameter set has been changed to
OAuthParameterSet- Example:
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- Example:
- The
Locationparameter has become mandatory in theGet-AzStorageUsagecmdlet - The Storage API methods now use the Task-based Asynchronous Pattern (TAP), instead of synchronous API calls. The following examples demonstrate the new asynchronous commands:
Blob Snapshot
AzureRM:
$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$b.ICloudBlob.Snapshot()
Az:
$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$task = $b.ICloudBlob.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result
Share Snapshot
AzureRM:
$Share = Get-AzureStorageShare -Name $containerName -Context $ctx
$snapshot = $Share.Snapshot()
Az:
$Share = Get-AzStorageShare -Name $containerName -Context $ctx
$task = $Share.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result
Undelete soft-deleted blob
AzureRM:
$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$b.ICloudBlob.Undelete()
Az:
$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$task = $b.ICloudBlob.UndeleteAsync()
$task.Wait()
Set Blob Tier
AzureRM:
$blockBlob = Get-AzureStorageBlob -Container $containerName -Blob $blockBlobName -Context $ctx
$blockBlob.ICloudBlob.SetStandardBlobTier("hot")
$pageBlob = Get-AzureStorageBlob -Container $containerName -Blob $pageBlobName -Context $ctx
$pageBlob.ICloudBlob.SetPremiumBlobTier("P4")
Az:
$blockBlob = Get-AzStorageBlob -Container $containerName -Blob $blockBlobName -Context $ctx
$task = $blockBlob.ICloudBlob.SetStandardBlobTierAsync("hot")
$task.Wait()
$pageBlob = Get-AzStorageBlob -Container $containerName -Blob $pageBlobName -Context $ctx
$task = $pageBlob.ICloudBlob.SetPremiumBlobTierAsync("P4")
$task.Wait()
Az.Websites (previously AzureRM.Websites)
- Removed deprecated properties from the
PSAppServicePlan,PSCertificate,PSCloningInfo, andPSSiteobjects
Azure PowerShell