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:
- Recomendado: Desinstalar el módulo AzureRM. Asegúrese de quitar todas las versiones instaladas de AzureRM, no solo la versión más reciente.
- Instalar el módulo Az
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-AzVM
y 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 | Sí |
AzureRM.Insights | Az.Monitor | Sí |
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
yScmHostnameConfiguration
de tipoPsApiManagementHostnameConfiguration
dePsApiManagementContext
. En su lugar, usePortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
yScmCustomHostnameConfiguration
de tipoPsApiManagementCustomHostNameConfiguration
. - Se quitó la propiedad
StaticIPs
de PsApiManagementContext. La propiedad se ha dividido enPublicIPAddresses
yPrivateIPAddresses
. - Se ha quitado la propiedad necesaria
Location
del cmdlet New-AzureApiManagementVirtualNetwork.
- Se eliminó la propiedad
Az.Billing (anteriormente AzureRM.Billing, AzureRM.Consumption y AzureRM.UsageAggregates)
- El parámetro
InvoiceName
se quitó del cmdletGet-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 propiedadIdentity
en los objetosPSVirtualMachine
yPSVirtualMachineScaleSet
. Los scripts ya no deberán usar el valor de este campo para tomar decisiones de procesamiento. - El tipo de propiedad
InstanceView
del objeto dePSVirtualMachineScaleSetVM
se cambia deVirtualMachineInstanceView
aVirtualMachineScaleSetVMInstanceView
- Se han quitado las propiedades
AutoOSUpgradePolicy
yAutomaticOSUpgrade
de la propiedadUpgradePolicy
. - El tipo de propiedad
Sku
enPSSnapshotUpdate
objeto se cambia deDiskSku
aSnapshotSku
VmScaleSetVMParameterSet
se quita del cmdletAdd-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 objetosPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
yPSKeyVaultSecretAttributes
. Los Scripts ya no deberían hacer referencia a la propiedadPurgeDisabled
para tomar decisiones de procesamiento.
Az.Monitor (anteriormente AzureRM.Insights)
Se han quitado los nombres en plural de los parámetros
Categories
yTimegrains
en favor de los nombres en singular en el cmdletSet-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 cmdletGet-AzServiceEndpointPolicyDefinition
. - Se eliminó la propiedad en desuso
EnableVmProtection
del objetoPSVirtualNetwork
- 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 cmdletNew/Set-AzPolicyAssignment
Se ha quitado el parámetro
Password
de los cmdletsNew-AzADServicePrincipal
yNew-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
- Ejemplo:
- El parámetro
Location
se ha convertido en obligatorio en el cmdletGet-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
,PSCloningInfo
yPSSite
Pasos siguientes
- Más información sobre PowerShell en Azure Stack Hub, consulte Introducción a PowerShell en Azure Stack Hub
- Instale el módulo Az de PowerShell, consulte Instalación del módulo Az de PowerShell para Azure Stack Hub