Compartir a través de


Migración de AzureRM a Azure PowerShell Az en Azure Stack Hub

El módulo Az tiene paridad de características con AzureRM, pero usa nombres de cmdlet más cortos y coherentes. Los scripts escritos para los cmdlets de AzureRM no funcionarán automáticamente con el nuevo módulo. Para facilitar la transición, Az ofrece herramientas para permitirle ejecutar los scripts existentes mediante AzureRM. No es conveniente realizar ninguna migración a un nuevo conjunto de comandos, pero este artículo le ayudará a empezar a realizar la transición al nuevo módulo.

Para ver la lista completa de cambios importantes entre AzureRM y Az, consulte la guía de migración de para Az 1.0.0

Comprobación de las versiones instaladas de AzureRM

Antes de realizar los pasos de migración, compruebe qué versiones de AzureRM están instaladas en el sistema. Al hacerlo, puede asegurarse de que los scripts ya se ejecutan en la versión más reciente y le permiten saber si puede habilitar alias de comandos sin desinstalar AzureRM.

Para comprobar qué versiones de AzureRM ha instalado, ejecute el comando :

Get-InstalledModule -Name AzureRM -AllVersions

Comprobación de que los scripts actuales funcionan con AzureRM

¡Este es el paso más importante! Ejecute los scripts existentes y asegúrese de que funcionan con el versión más reciente de de AzureRM (2.5.0). Si tus scripts no funcionan, asegúrate de leer la guía de migración de AzureRM.

Instalación del módulo Az de Azure PowerShell

El primer paso es instalar el módulo Az en la plataforma. Al instalar Az, se recomienda desinstalar AzureRM. En los pasos siguientes, aprenderá a seguir ejecutando los scripts existentes y a habilitar la compatibilidad con nombres de cmdlet antiguos.

Para instalar el módulo Az de Azure PowerShell, siga estos pasos:

Habilitación de alias de compatibilidad de AzureRM

Importante

Solo habilite el modo de compatibilidad si ha desinstalado todas las versiones de de AzureRM. La habilitación del modo de compatibilidad cuando los cmdlets de AzureRM aún están disponibles puede dar lugar a un comportamiento imprevisible. Omita este paso si decidió mantener AzureRM instalado, pero tenga en cuenta que los cmdlets de AzureRM usarán los módulos anteriores y no llamarán a ningún cmdlet del módulo Az.

Con AzureRM desinstalado y los scripts que funcionan con la versión más reciente de AzureRM, el siguiente paso es habilitar el modo de compatibilidad para el módulo Az. La compatibilidad está habilitada con el comando :

Enable-AzureRmAlias -Scope CurrentUser

Los alias permiten usar nombres de cmdlet antiguos con el módulo Az instalado. Estos alias se escriben en el perfil de usuario para el ámbito seleccionado. Si no existe ningún perfil de usuario, se crea uno.

Advertencia

Puede usar una -Scope diferente para este comando, pero no se recomienda. Los alias se escriben en el perfil de usuario para el ámbito seleccionado, por lo tanto, mantenga su habilitación en un ámbito tan limitado como sea posible. La habilitación de alias en todo el sistema también podría provocar problemas para otros usuarios que tienen AzureRM instalado en su ámbito local.

Una vez habilitado el modo de alias, vuelva a ejecutar los scripts para confirmar que siguen funcionando según lo previsto.

Cambio de los nombres de módulo y cmdlet

En general, los nombres de módulo se han cambiado de manera que AzureRM y Azure se conviertan en Az, y lo mismo ocurre con los cmdlets. Por ejemplo, se ha cambiado el nombre del módulo de AzureRM.Compute a Az.Compute. New-AzureRMVM se convierte en New-AzVMy Get-AzureStorageBlob ahora está Get-AzStorageBlob.

Hay excepciones a este cambio de nomenclatura que debe tener en cuenta. Algunos módulos se cambiaron el nombre o se combinaron en módulos existentes sin que esto afecte al sufijo de sus cmdlets, aparte de cambiar AzureRM o Azure a Az. De lo contrario, se cambió el sufijo completo del cmdlet para reflejar el nuevo nombre del módulo.

Módulo AzureRM Módulo Az ¿Se ha cambiado el sufijo del cmdlet?
AzureRM.Profile Az.Accounts
AzureRM.Insights Az.Monitor
AzureRM.Tags Az.Resources No
AzureRM.UsageAggregates Az.Billing No
AzureRM.Consumption Az.Billing No

Resumen

Si sigue estos pasos, puede actualizar todos los scripts existentes para usar el nuevo módulo. Si tiene alguna pregunta o problema con estos pasos que dificultan la migración, comente este artículo para que podamos mejorar las instrucciones.

Cambios importantes para Az 1.0.0

En este documento se proporciona información detallada sobre los cambios entre AzureRM 6.x y el nuevo módulo Az, versión 1.x y posteriores. La tabla de contenido le ayudará a guiarle a través de una ruta de migración completa, incluidos los cambios específicos del módulo que pueden afectar a los scripts.

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.

Cambios en el prefijo del nombre del cmdlet

En el módulo AzureRM, los cmdlets utilizan AzureRM o Azure como 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 simplificar la transición a estos nuevos nombres de cmdlet, Az presenta 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 uso del argumento -Scope con Enable-AzureRmAlias permite elegir dónde están habilitados los alias.

Por ejemplo, el siguiente script en AzureRM:

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

Se puede ejecutar con cambios mínimos mediante 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, de modo que después de ejecutar este cmdlet, no será necesario cambiar un script como este:

Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Para obtener detalles completos sobre el uso de los alias cmdlets, consulte la referencia Enable-AzureRmAlias.

Cuando esté listo para deshabilitar los alias, Disable-AzureRmAlias quita los alias creados. Para obtener más información, 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.

Cambios en el nombre del módulo

Los nombres de 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.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

Los cambios en los nombres de módulo significan que cualquier script que use #Requires o Import-Module para cargar módulos específicos deberá cambiarse para usar el nuevo módulo en su lugar. Para los módulos en los que el sufijo de cmdlet no ha cambiado, esto significa que, aunque el nombre del módulo ha cambiado, el sufijo que indica que el espacio de operación tiene no.

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

Los scripts que usan #Requires o Import-Module para declarar una dependencia en los módulos de AzureRM deben actualizarse para usar los nuevos nombres de módulo. Por ejemplo:

#Requires -Module AzureRM.Compute

Debe cambiarse a:

#Requires -Module Az.Compute

Para Import-Module:

Import-Module -Name AzureRM.Compute

Debe cambiarse a:

Import-Module -Name Az.Compute

Migración de invocaciones de cmdlet completamente calificadas

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

AzureRM.Compute\Get-AzureRmVM

Debe cambiarse para usar los nuevos nombres de módulo y cmdlet:

Az.Compute\Get-AzVM

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

Los módulos que expresan dependencias en los módulos de AzureRM a través de un archivo de manifiesto de módulo (.psd1) deberán actualizar los nombres de módulo en su sección de RequiredModules:

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

Debe cambiarse a:

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

Módulos quitados

Se han quitado los siguientes módulos:

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

Las herramientas de estos servicios ya no se soportan activamente. Se recomienda a los clientes pasar a servicios alternativos tan pronto como sea conveniente.

Windows PowerShell 5.1 y .NET 4.7.2

El uso de Az con PowerShell 5.1 para Windows requiere la instalación de .NET Framework 4.7.2. El uso de PowerShell Core 6.x o posterior no requiere .NET Framework.

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

Debido a los cambios en el flujo de autenticación para .NET Standard, estamos quitando temporalmente el inicio de sesión de usuario a través de PSCredential. Esta funcionalidad se volverá a introducir en la versión 1/15/2019 para PowerShell 5.1 para Windows. Esto se describe detalladamente en este problema de GitHub.

Inicio de sesión con código de dispositivo predeterminado en lugar de la solicitud del navegador web

Debido a los cambios en el flujo de autenticación para .NET Standard, se usa el inicio de sesión del dispositivo como flujo de inicio de sesión predeterminado durante el inicio de sesión interactivo. El inicio de sesión basado en navegador web se reintroducirá para PowerShell 5.1 para Windows como opción predeterminada en la versión del 15/1/2019. En ese momento, los usuarios podrán elegir el inicio de sesión del dispositivo mediante 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 quitado las siguientes propiedades:
    • Se eliminó la propiedad PortalHostnameConfiguration, ProxyHostnameConfiguration, ManagementHostnameConfiguration y ScmHostnameConfiguration de tipo PsApiManagementHostnameConfiguration de PsApiManagementContext. En su lugar, use PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration y ScmCustomHostnameConfiguration de tipo PsApiManagementCustomHostNameConfiguration.
    • Se quitó 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)

  • El parámetro InvoiceName se quitó del cmdlet Get-AzConsumptionUsageDetail. Los scripts deberán usar otros parámetros de identidad para la factura.

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 propiedad InstanceView del objeto de PSVirtualMachineScaleSetVM se cambia de VirtualMachineInstanceView a VirtualMachineScaleSetVMInstanceView
  • Se han quitado las propiedades AutoOSUpgradePolicy y AutomaticOSUpgrade de la propiedad UpgradePolicy.
  • El tipo de propiedad Sku en PSSnapshotUpdate objeto se cambia de DiskSku a SnapshotSku
  • VmScaleSetVMParameterSet se quita del cmdlet Add-AzVMDataDisk, ya no se puede agregar un disco de datos individualmente a una máquina virtual ScaleSet.

Az.KeyVault (anteriormente AzureRM.KeyVault)

  • La propiedad PurgeDisabled se quitó de los objetos PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItemy PSKeyVaultSecretAttributes. Los Scripts ya no deberían hacer referencia a la propiedad PurgeDisabled para tomar decisiones de procesamiento.

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)

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

Los scripts ya no deben tomar decisiones de procesamiento basadas en los valores de estos campos.

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 aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
    

    Debe cambiarse para recuperar la contraseña de la salida:

    $credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    $secPassword = $credential.Secret
    

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

  • Para admitir la creación de un contexto de almacenamiento de Oauth con solo el nombre de la cuenta de almacenamiento, el conjunto de parámetros predeterminado se ha cambiado a OAuthParameterSet
    • Ejemplo: $ctx = New-AzureStorageContext -StorageAccountName $accountName
  • El parámetro Location se ha convertido en obligatorio en el cmdlet Get-AzStorageUsage
  • Los métodos de la API de almacenamiento ahora usan el patrón asincrónico basado en tareas (TAP), en lugar de las llamadas API sincrónicas. En los ejemplos siguientes se 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 de 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, PSCloningInfoy PSSite

Pasos siguientes