Cambios importantes en Az 1.0.0

Este documento proporciona información detallada sobre los cambios entre AzureRM 6.x y el nuevo módulo Az versión 1.x y versiones posteriores. La tabla de contenido le guiará por la ruta de migración completa, incluidos los cambios específicos del módulo que pueden afectar a los scripts.

Para obtener consejos generales sobre cómo comenzar con una migración de AzureRM a Az, consulte Iniciar la migración de AzureRM a Az.

Importante

Ha habido también cambios importantes entre Az 1.0.0 y Az 2.0.0. Después de seguir esta guía de actualización de AzureRM a Az, consulte los cambios importantes de Az 2.0.0 para averiguar si necesita realizar cambios adicionales.

Tabla de contenido

Cambios importantes generales

En esta sección se describen los cambios importantes generales que forman parte de este nuevo diseño del módulo Az.

Cambio de prefijo en el nombre de los cmdlets

En el módulo AzureRM, los cmdlets usan AzureRM o Azure como un prefijo de sustantivo. Para simplificar y normalizar los nombres de los cmdlets, todos usan "Az" como prefijo del nombre. Por ejemplo:

Get-AzureRMVM
Get-AzureKeyVaultSecret

Ha cambiado a:

Get-AzVM
Get-AzKeyVaultSecret

Para facilitar la transición a estos nuevos nombres de cmdlet, Az incorpora dos nuevos cmdlets, Enable-AzureRmAlias y Disable-AzureRmAlias. Enable-AzureRmAlias crea un alias para los nombres de cmdlet antiguos en AzureRM que se asignan a los nombres de cmdlet de Az más recientes. El argumento -Scope con Enable-AzureRmAlias le permite elegir dónde se habilitan los alias.

Por ejemplo, el siguiente script de AzureRM:

#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Se puede ejecutar con cambios mínimos con Enable-AzureRmAlias:

#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Al ejecutar Enable-AzureRmAlias -Scope CurrentUser, se habilitarán los alias para todas las sesiones de PowerShell que abra por lo que, después de ejecutar este cmdlet, no sería necesario realizar ningún cambio en un script como este:

Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Para obtener información detallada sobre el uso de los cmdlets de alias, consulte la Referencia de Enable-AzureRmAlias.

Cuando esté listo para deshabilitar los alias, Disable-AzureRmAlias quita los alias creados. Para obtener información detallada, consulte la Referencia de Disable-AzureRmAlias.

Importante

Al deshabilitar los alias, asegúrese de que se deshabilitan para todos los ámbitos en los que han estado habilitados.

Cambio de nombre de los módulos

Los nombres de los módulo han cambiado de AzureRM.* a Az.*, excepto los siguientes módulos:

Módulo AzureRM Módulo Az
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

El cambio de nombre de los módulos implica que todos los scripts que usen #Requires o Import-Module para cargar módulos específicos deben cambiarse para que usen el nuevo módulo en su lugar. En el caso de los módulos en los que no ha cambiado el sufijo del cmdlet, esto significa que, aunque ha cambiado el nombre del módulo, no ha cambiado el sufijo que indica el espacio de la operación.

Migración de las instrucciones #Requires e Import-Module

Es necesario actualizar los scripts que usan #Requires o Import-Module para declarar una dependencia en los módulos AzureRM para que usen los nuevos nombres de módulos. Por ejemplo:

#Requires -Module AzureRM.Compute

Se debe cambiar a:

#Requires -Module Az.Compute

Para Import-Module:

Import-Module -Name AzureRM.Compute

Se debe cambiar a:

Import-Module -Name Az.Compute

Migración de las invocaciones de cmdlet completas

Los scripts que usan las invocaciones de cmdlets calificadas para el módulo, como esta:

AzureRM.Compute\Get-AzureRmVM

Se deben cambiar para que usen los nuevos nombres de módulos y cmdlets:

Az.Compute\Get-AzVM

Migración de las dependencias de manifiesto de módulo

Los módulos que expresan dependencias en módulos AzureRM mediante un archivo de manifiesto de módulo (. psd1) deben actualizar los nombres de los módulos en su sección RequiredModules:

RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})

Se deben cambiar a:

RequiredModules = @(@{ModuleName="Az.Profile"; ModuleVersion="1.0.0"})

Módulos eliminados

Se han eliminado los siguientes módulos:

  • AzureRM.Backup
  • AzureRM.Compute.ManagedService
  • AzureRM.Scheduler

Las herramientas de estos servicios ya no tiene un soporte técnico activo. Se recomienda a los clientes que cambien a otros servicios tan pronto como les sea posible.

Windows PowerShell 5.1 y .NET 4.7.2

Para usar Az con PowerShell 5.1 para Windows, es necesario instalar .NET Framework 4.7.2. El uso de PowerShell Core 6.x o versiones posteriores no requiere .NET Framework.

Eliminación temporal del inicio de sesión de usuario con PSCredential

Debido a los cambios en el flujo de autenticación de .NET Standard, hemos quitando temporalmente el inicio de sesión de usuario mediante PSCredential. Esta funcionalidad se volverá a incorporar a PowerShell 5.1 para Windows en la versión del 15/1/2019. En esta incidencia de GitHub se trata este asunto detalladamente.

Inicio de sesión predeterminado con código del dispositivo en lugar del símbolo del sistema del explorador web

Debido a los cambios en el flujo de autenticación de .NET Standard, estamos usando el inicio de sesión de dispositivo como flujo de inicio de sesión predeterminado durante el inicio de sesión interactivo. El inicio de sesión basado en el explorador web se volverá a incorporar en PowerShell 5.1 para Windows como configuración predeterminada en la versión del 15/1/2019. En ese momento, los usuarios podrán elegir iniciar sesión de dispositivo con un parámetro Switch.

Cambios importantes en los módulos

En esta sección se describen cambios importantes específicos para módulos y cmdlets individuales.

Az.ApiManagement (anteriormente AzureRM.ApiManagement)

  • Se han eliminado los siguientes cmdlets:
    • New-AzureRmApiManagementHostnameConfiguration
    • Set-AzureRmApiManagementHostnames
    • Update-AzureRmApiManagementDeployment
    • Import-AzureRmApiManagementHostnameCertificate
    • En su lugar, use el cmdlet Set-AzApiManagement para establecer estas propiedades
  • Se han eliminado las siguientes propiedades:
    • Se han quitado las propiedades PortalHostnameConfiguration, ProxyHostnameConfiguration, ManagementHostnameConfiguration y ScmHostnameConfiguration del tipo PsApiManagementHostnameConfiguration de PsApiManagementContext. En su lugar, use PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration y ScmCustomHostnameConfiguration del tipo PsApiManagementCustomHostNameConfiguration.
    • Se ha quitado la propiedad StaticIPs de PsApiManagementContext. La propiedad se ha dividido en PublicIPAddresses y PrivateIPAddresses.
    • Se ha quitado la propiedad necesaria Location del cmdlet New-AzureApiManagementVirtualNetwork.

Az.Billing (anteriormente AzureRM.Billing, AzureRM.Consumption y AzureRM.UsageAggregates)

  • Se ha quitado el parámetro InvoiceName del cmdlet Get-AzConsumptionUsageDetail. Los scripts debe usar otros parámetros de la identidad para la factura.

Az.CognitiveServices (anteriormente AzureRM.CognitiveServices)

  • Se ha quitado el conjunto de parámetros GetSkusWithAccountParamSetName del cmdlet Get-AzCognitiveServicesAccountSkus. Debe obtener los SKU por tipo de cuenta y ubicación, en lugar de usar ResourceGroupName y AccountName.

Az.Compute (anteriormente AzureRM.Compute)

  • Se han quitado IdentityIds de la propiedad Identity en los objetos PSVirtualMachine y PSVirtualMachineScaleSet. Los scripts ya no deberán usar el valor de este campo para tomar decisiones de procesamiento.
  • El tipo de la propiedad InstanceView del objeto PSVirtualMachineScaleSetVM ha cambiado de VirtualMachineInstanceView a VirtualMachineScaleSetVMInstanceView.
  • Se han quitado las propiedades AutoOSUpgradePolicy y AutomaticOSUpgrade de la propiedad UpgradePolicy.
  • El tipo de la propiedad Sku del objeto PSSnapshotUpdate ha cambiado de DiskSku a SnapshotSku.
  • VmScaleSetVMParameterSet se ha quitado del cmdlet Add-AzVMDataDisk; ya no se puede agregar un disco de datos individualmente a una máquina virtual de un conjunto de escalado.

Az.DataFactory (anteriormente AzureRM.DataFactories y AzureRM.DataFactoryV2)

  • El parámetro GatewayName ahora es obligatorio en el cmdlet New-AzDataFactoryEncryptValue.
  • Se ha quitado el cmdlet New-AzDataFactoryGatewayKey.
  • Se ha quitado el parámetro LinkedServiceName del cmdlet Get-AzDataFactoryV2ActivityRun. Los scripts ya no deberán usar el valor de este campo para tomar decisiones de procesamiento.

Az.DataLakeAnalytics (anteriormente AzureRM.DataLakeAnalytics)

  • Se han quitado los cmdlets en desuso New-AzDataLakeAnalyticsCatalogSecret, Remove-AzDataLakeAnalyticsCatalogSecret y Set-AzDataLakeAnalyticsCatalogSecret.

Az.DataLakeStore (anteriormente AzureRM.DataLakeStore)

  • En los siguientes cmdlets, se ha cambiado del parámetro Encoding del tipo FileSystemCmdletProviderEncoding a System.Text.Encoding. Este cambio ha quitado los valores de codificación String y Oem. Todos los demás valores de codificación anteriores se mantienen.

    • New-AzureRmDataLakeStoreItem
    • Add-AzureRmDataLakeStoreItemContent
    • Get-AzureRmDataLakeStoreItemContent
  • Se ha quitado el alias de propiedad en desuso Tags de los cmdlets New-AzDataLakeStoreAccount y Set-AzDataLakeStoreAccount.

    Los scripts que usen:

    New-AzureRMDataLakeStoreAccount -Tags @{TagName="TagValue"}
    

    Se deben cambiar a:

    New-AzDataLakeStoreAccount -Tag @{TagName="TagValue"}
    
  • Se han quitado las propiedades en desuso Identity, EncryptionState, EncryptionProvisioningState, EncryptionConfig, FirewallState, FirewallRules, VirtualNetworkRules, TrustedIdProviderState, TrustedIdProviders, DefaultGroup, NewTier, CurrentTier, FirewallAllowAzureIps del objeto PSDataLakeStoreAccountBasic. Los scripts que usen el valor de PSDatalakeStoreAccount devuelto desde Get-AzDataLakeStoreAccount no deben hacer referencia a estas propiedades.

Az.KeyVault (anteriormente AzureRM.KeyVault)

  • Se ha quitado la propiedad PurgeDisabled de los objetos PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItem y PSKeyVaultSecretAttributes. Los scripts ya no deben hacer referencia a la propiedad PurgeDisabled para tomar decisiones de procesamiento.

Az.Media (anteriormente AzureRM.Media)

  • Se ha quitado el alias de propiedad en desuso Tags del cmdlet New-AzMediaService. Los scripts que usen:

    New-AzureRMMediaService -Tags @{TagName="TagValue"}
    

    Se deben cambiar a:

    New-AzMediaService -Tag @{TagName="TagValue"}
    

Az.Monitor (anteriormente AzureRM.Insights)

  • Se han quitado los nombres en plural de los parámetros Categories y Timegrains en favor de los nombres en singular en el cmdlet Set-AzDiagnosticSetting. Los scripts que usen:

    Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
    

    Se deben cambiar a:

    Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
    

Az.Network (anteriormente AzureRM.Network)

  • Se ha quitado el parámetro en desuso ResourceId del cmdlet Get-AzServiceEndpointPolicyDefinition.
  • Se ha quitado la propiedad en desuso EnableVmProtection del objeto PSVirtualNetwork.
  • Se ha quitado el cmdlet en desuso Set-AzVirtualNetworkGatewayVpnClientConfig.

Los scripts no deben tomar decisiones de procesamiento en función de los valores de estos campos.

Az.OperationalInsights (anteriormente AzureRM.OperationalInsights)

  • Se ha quitado el conjunto de parámetros predeterminados de Get-AzOperationalInsightsDataSource, y ByWorkspaceNameByKind ha pasado a ser el conjunto de parámetros predeterminados.

    Los scripts que enumeren orígenes de datos mediante:

    Get-AzureRmOperationalInsightsDataSource
    

    Se deben cambiar para especificar -Kind:

    Get-AzOperationalInsightsDataSource -Kind AzureActivityLog
    

Az.RecoveryServices (anteriormente AzureRM.RecoveryServices, AzureRM.RecoveryServices.Backup y AzureRM.RecoveryServices.SiteRecovery)

  • Se ha quitado el parámetro Encryption del cmdlet New/Set-AzRecoveryServicesAsrPolicy.
  • El parámetro TargetStorageAccountName ahora es obligatorio para las restauraciones de discos administrados en el cmdlet Restore-AzRecoveryServicesBackupItem.
  • Se han quitado los parámetros StorageAccountName y StorageAccountResourceGroupName del cmdlet Restore-AzRecoveryServicesBackupItem.
  • Se ha quitado el parámetro Name del cmdlet Get-AzRecoveryServicesBackupContainer.

Az.Resources (anteriormente AzureRM.Resources)

  • Se ha quitado el parámetro Sku del cmdlet New/Set-AzPolicyAssignment.

  • Se ha quitado el parámetro Password de los cmdlets New-AzADServicePrincipal y New-AzADSpCredential. Las contraseñas se generan automáticamente. Los scripts que proporcionaban la contraseña:

    New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476 -Password $secPassword
    

    Se deben cambiar para que tomen la contraseña de la salida:

    $credential = New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476
    $secPassword = $credential.Secret
    

Az.ServiceFabric (anteriormente AzureRM.ServiceFabric)

  • Se han cambiado los siguientes tipos de valor devuelto de cmdlet:
    • Se ha quitado la propiedad ServiceTypeHealthPolicies de tipo ApplicationHealthPolicy.
    • Se ha quitado la propiedad ApplicationHealthPolicies de tipo ClusterUpgradeDeltaHealthPolicy.
    • Se ha quitado la propiedad OverrideUserUpgradePolicy de tipo ClusterUpgradePolicy.
    • Estos cambios afectan a los siguientes 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

Az.Sql (anteriormente AzureRM.Sql)

  • Se han quitado los parámetros State y ResourceId del cmdlet Set-AzSqlDatabaseBackupLongTermRetentionPolicy.
  • Se han quitado los cmdlets en desuso Get/Set-AzSqlServerBackupLongTermRetentionVault, Get/Start/Stop-AzSqlServerUpgrade, Get/Set-AzSqlDatabaseAuditingPolicy, Get/Set-AzSqlServerAuditingPolicy, Remove-AzSqlDatabaseAuditing y Remove-AzSqlServerAuditing
  • Se ha quitado el parámetro en desuso Current del cmdlet Get-AzSqlDatabaseBackupLongTermRetentionPolicy.
  • Se ha quitado el parámetro en desuso DatabaseName del cmdlet Get-AzSqlServerServiceObjective.
  • Se ha quitado el parámetro en desuso PrivilegedLogin del cmdlet Set-AzSqlDatabaseDataMaskingPolicy.

Az.Storage (anteriormente Azure.Storage y AzureRM.Storage)

  • Para poder crear un contexto de almacenamiento de Oauth solo con el nombre de la cuenta de almacenamiento, se ha cambiado el conjunto de parámetros predeterminados a OAuthParameterSet.
    • Ejemplo: $ctx = New-AzureStorageContext -StorageAccountName $accountName
  • El parámetro Location ahora es obligatorio en el cmdlet Get-AzStorageUsage.
  • Los métodos de Storage API ahora usan el patrón asincrónico basado en tareas (TAP), en lugar de llamadas de API sincrónicas. Los ejemplos siguientes muestran los nuevos comandos asincrónicos:

Instantánea de blob

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

Compartir instantánea

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

Recuperar los blobs eliminados temporalmente

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()

Establecer nivel del blob

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 (anteriormente AzureRM.Websites)

  • Se han quitado las propiedades en desuso de los objetos PSAppServicePlan, PSCertificate, PSCloningInfo y PSSite.