Migrar do AzureRM para Azure PowerShell Az no Azure Stack Hub
O módulo Az tem paridade de recursos com o AzureRM, mas usa nomes de cmdlets menores e mais consistentes. Os scripts gravados para os cmdlets do AzureRM não funcionarão automaticamente com o novo módulo. Para facilitar a transição, o Az oferece ferramentas para permitir a execução de seus scripts existentes usando o AzureRM. A migração para um novo conjunto de comandos nem sempre é conveniente, mas este artigo ajudará você a começar a realizar a transição para o novo módulo.
Para ver a lista completa de alterações recentes entre o AzureRM e o Az, confira o Guia de migração para o Az 1.0.0
Verificar se há versões instaladas do AzureRM
Antes de executar qualquer etapa de migração, verifique quais versões do AzureRM estão instaladas em seu sistema. Isso permite que você verifique se os scripts já estão sendo executados na versão mais recente e se você pode ativar os aliases de comando sem desinstalar o AzureRM.
Para verificar qual versão do AzureRM você instalou, execute o comando:
Get-InstalledModule -Name AzureRM -AllVersions
Verificar se os scripts atuais funcionam com o AzureRM
Essa é a etapa mais importante! Execute os scripts existentes e verifique se eles funcionam com a versão mais recente do AzureRM (2.5.0). Se os scripts não funcionarem, certifique-se de ler o Guia de migração do AzureRM.
Instalar o módulo Az do Azure PowerShell
A primeira etapa é instalar o módulo Az em sua plataforma. Quando você instala o Az, é recomendável desinstalar o AzureRM. Nas etapas a seguir, você aprenderá como continuar executando seus scripts existentes e habilitar a compatibilidade para os nomes de cmdlet antigos.
Para instalar o módulo Az do Azure PowerShell, siga estas etapas:
- Recomendado: desinstale o módulo AzureRM. Certifique-se de remover todas as versões instaladas do AzureRM, não apenas a versão mais recente.
- Instale o módulo Az
Habilitar aliases de compatibilidade do AzureRM
Importante
Habilite o modo de compatibilidade somente se você tiver desinstalado todas as versões do AzureRM. A ativação do modo de compatibilidade com os cmdlets do AzureRM ainda disponíveis poderá resultar em um comportamento imprevisível. Ignore esta etapa se tiver decidido manter o AzureRM instalado, mas esteja ciente de que os cmdlets do AzureRM usarão os módulos mais antigos e não chamarão cmdlets do Az.
Com o AzureRM desinstalado e seus scripts funcionando com a versão mais recente do AzureRM, a próxima etapa é habilitar o modo de compatibilidade para o módulo Az. A compatibilidade é habilitada com o comando:
Enable-AzureRmAlias -Scope CurrentUser
Os aliases permitem a capacidade de usar nomes de cmdlets antigos com o módulo Az instalado. Esses aliases são gravados no perfil do usuário para o escopo escolhido. Se não existir perfis de usuário, um perfil será criado.
Aviso
Você pode usar outro -Scope
para este comando, mas isso não é recomendado. Os aliases são gravados no perfil do usuário do escopo escolhido, portanto, mantenha-os habilitados para um escopo o mais limitado possível. Habilitar os aliases em todo o sistema também pode causar problemas para outros usuários que têm o AzureRM instalado em seu escopo local.
Após habilitar o modo de alias, execute seus scripts novamente para confirmar que eles ainda funcionam conforme o esperado.
Alterar nomes de módulo e cmdlet
Em geral, os nomes de módulos foram alterados para que AzureRM
e Azure
tornem-se Az
, e o mesmo ocorreu com os cmdlets.
Por exemplo, o módulo AzureRM.Compute
foi renomeado para Az.Compute
.
New-AzureRMVM
se tornou New-AzVM
, e Get-AzureStorageBlob
agora é Get-AzStorageBlob
.
Há exceções para essa alteração de nomenclatura e você deve estar atento. Alguns módulos foram renomeados ou mesclados em módulos existentes sem que isso afetasse o sufixo de seus cmdlets, além de alterar AzureRM
ou Azure
para Az
. Caso contrário, o sufixo completo do cmdlet foi alterado para refletir o novo nome do módulo.
Módulo AzureRM | Módulo Az | O sufixo do cmdlet foi alterado? |
---|---|---|
AzureRM.profile | Az.Accounts | Sim |
AzureRM.Insights | Az.Monitor | Sim |
AzureRM.Tags | Az.Resources | Não |
AzureRM.UsageAggregates | Az.Billing | Não |
AzureRM.Consumption | Az.Billing | Não |
Resumo
Seguindo essas etapas, é possível atualizar todos os scripts existentes para usar o novo módulo. Se você tiver dúvidas ou problemas com estas etapas que dificultaram a migração, deixe seu comentário sobre este artigo para que possamos melhorar as instruções.
Alterações da falha para Az 1.0.0
Este documento fornece informações detalhadas sobre as alterações entre o AzureRM 6.x e o novo módulo Az, versão 1.x e posterior. O sumário ajudará a orientá-lo por um caminho de migração completa, incluindo alterações específicas do módulo que possam afetar seus scripts.
Alterações da falha gerais
Esta seção fornece detalhes sobre as alterações gerais da falha que fazem parte do novo design do módulo Az.
Alterações no prefixo do substantivo do cmdlet
No módulo AzureRM, os cmdlets usavam AzureRM
ou Azure
como prefixo de substantivo. O Az simplifica e normaliza os nomes dos cmdlets, de modo que todos os cmdlets usem 'Az' como seu prefixo de substantivo do cmdlet. Por exemplo:
Get-AzureRMVM
Get-AzureKeyVaultSecret
Foi alterado para:
Get-AzVM
Get-AzKeyVaultSecret
Para simplificar a transição para esses novos nomes de cmdlets, o Az introduz dois novos cmdlets, Enable-AzureRmAlias e Disable-AzureRmAlias.
Enable-AzureRmAlias
cria aliases para os nomes de cmdlets mais antigos no AzureRM que são mapeados para os nomes de cmdlets mais recentes do Az. O uso do argumento -Scope
com Enable-AzureRmAlias
permite que você escolha em que local os aliases serão habilitados.
Por exemplo, o script a seguir no AzureRM:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Pode ser executado com alterações mínimas usando Enable-AzureRmAlias
:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
A execução de Enable-AzureRmAlias -Scope CurrentUser
habilitará os aliases para todas as sessões do PowerShell, para que, após a execução desse cmdlet, um script como este não precise ser alterado:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Para obter detalhes completos sobre o uso dos cmdlets de alias, confira a referência de Enable-AzureRmAlias.
Quando você estiver pronto para desabilitar os aliases, Disable-AzureRmAlias
removerá os aliases criados. Para obter detalhes completos, confira a referência de Disable-AzureRmAlias.
Importante
Ao desabilitar os aliases, verifique se eles estão desabilitados para todos os escopos que tinham aliases habilitados.
Alterações no nome do módulo
Os nomes do módulo foram alterados de AzureRM.*
para Az.*
, exceto para os seguintes 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 |
As alterações nos nomes dos módulos significam que qualquer script que usa #Requires
ou Import-Module
para carregar módulos específicos precisarão ser alterados para usar o novo módulo. Para os módulos em que o sufixo do cmdlet não foi alterado, isso significa que, embora o nome do módulo tenha sido alterado, isso não ocorreu com o sufixo que indica o espaço da operação.
Migrar requer e importar instruções de módulo
Os scripts que usam #Requires
ou Import-Module
para declarar uma dependência de módulos AzureRM precisam ser atualizados para usar os novos nomes de módulos. Por exemplo:
#Requires -Module AzureRM.Compute
Deve ser alterado para:
#Requires -Module Az.Compute
Para Import-Module
:
Import-Module -Name AzureRM.Compute
Deve ser alterado para:
Import-Module -Name Az.Compute
Migrando invocações de cmdlet totalmente qualificadas
Os scripts que usam as invocações de cmdlet qualificadas por módulo, como:
AzureRM.Compute\Get-AzureRmVM
Precisam ser alterados para usar os novos nomes de módulos e cmdlets:
Az.Compute\Get-AzVM
Como migrar dependências de manifesto de módulo
Os módulos que expressam dependências de módulos AzureRM por meio de um arquivo de manifesto (.psd1) de módulo precisarão atualizar os nomes de módulos em sua seção RequiredModules
:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
Precisa ser alterado para:
RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})
Módulos removidos
Os seguintes módulos foram removidos:
AzureRM.Backup
AzureRM.Compute.ManagedService
AzureRM.Scheduler
Não há mais suporte ativo para as ferramentas desses serviços. Os clientes são incentivados a mudar para serviços alternativos, assim que for conveniente.
Windows PowerShell 5.1 e .NET 4.7.2
O uso do Az com o PowerShell 5.1 para Windows exige a instalação do .NET Framework 4.7.2. O uso do PowerShell Core 6.x ou posterior não exige o .NET Framework.
Remoção temporária do logon do usuário usando PSCredential
Devido a alterações no fluxo de autenticação para o .NET Standard, estamos temporariamente removendo o logon de usuário por meio do PSCredential. Essa funcionalidade será introduzida novamente na versão de 15/1/2019 do PowerShell 5.1 para Windows. Isso é abordado detalhadamente neste problema do GitHub.
Logon de código de dispositivo padrão em vez de prompt do navegador da Web
Devido a alterações no fluxo de autenticação para o .NET Standard, estamos usando o logon do dispositivo como o fluxo de logon padrão durante o logon interativo. O logon baseado em navegador da Web será reintroduzido no PowerShell 5.1 para Windows como o padrão na versão de 15/1/2019. Nesse momento, os usuários poderão escolher logon de dispositivo usando um parâmetro Switch.
Alterações de falhas para módulos
Esta seção fornece detalhes sobre alterações específicas da falha para cmdlets e módulos individuais.
Az.ApiManagement (anteriormente AzureRM.ApiManagement)
- Remoção dos seguintes cmdlets:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- Use o cmdlet Set-AzApiManagement para definir essas propriedades
- Remoção das seguintes propriedades:
- Removidas as propriedades
PortalHostnameConfiguration
,ProxyHostnameConfiguration
,ManagementHostnameConfiguration
eScmHostnameConfiguration
do tipoPsApiManagementHostnameConfiguration
dePsApiManagementContext
. Em vez disso, usePortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
eScmCustomHostnameConfiguration
do tipoPsApiManagementCustomHostNameConfiguration
. - Removida a propriedade
StaticIPs
de PsApiManagementContext. A propriedade foi dividida emPublicIPAddresses
ePrivateIPAddresses
. - Removida a propriedade necessária
Location
do cmdlet New-AzureApiManagementVirtualNetwork.
- Removidas as propriedades
Az.Billing (anteriormente AzureRM.Billing, AzureRM.Consumption e AzureRM.UsageAggregates)
- O parâmetro
InvoiceName
foi removido em favor do cmdletGet-AzConsumptionUsageDetail
. Os scripts precisarão usar outros parâmetros de identidade para a fatura.
Az.Compute (anteriormente AzureRM.Compute)
-
IdentityIds
foram removidos da propriedadeIdentity
nos Scripts dos objetosPSVirtualMachine
ePSVirtualMachineScaleSet
, que não devem mais usar o valor desse campo para tomar decisões de processamento. - O tipo de propriedade
InstanceView
do objetoPSVirtualMachineScaleSetVM
foi alterado deVirtualMachineInstanceView
paraVirtualMachineScaleSetVMInstanceView
- As propriedades
AutoOSUpgradePolicy
eAutomaticOSUpgrade
foram removidas da propriedadeUpgradePolicy
- O tipo de propriedade
Sku
do objetoPSSnapshotUpdate
foi alterado deDiskSku
paraSnapshotSku
-
VmScaleSetVMParameterSet
foi removido do cmdletAdd-AzVMDataDisk
. Não é mais possível adicionar um disco de dados individualmente em uma VM ScaleSet.
Az.KeyVault (anteriormente AzureRM.KeyVault)
- A propriedade
PurgeDisabled
foi removida dos objetosPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
ePSKeyVaultSecretAttributes
e os Scripts não devem fazer referência à propriedadePurgeDisabled
para tomar decisões de processamento.
Az.Monitor (anteriormente AzureRM.Insights)
Removidos os nomes no plural dos parâmetros
Categories
eTimegrains
em favor de nomes de parâmetro no singular dos Scripts cmdletSet-AzDiagnosticSetting
sendo usadosSet-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
Deve ser alterado para
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network (anteriormente AzureRM.Network)
- Removido o parâmetro preterido
ResourceId
do cmdletGet-AzServiceEndpointPolicyDefinition
- Removida a propriedade preterida
EnableVmProtection
do objetoPSVirtualNetwork
- Removido o cmdlet preteridos
Set-AzVirtualNetworkGatewayVpnClientConfig
Os scripts não devem mais tomar decisões de processamento com base nos valores desses campos.
Az.Resources (anteriormente AzureRM.Resources)
Removido o parâmetro
Sku
do cmdletNew/Set-AzPolicyAssignment
Removido o parâmetro de
Password
das Senhas cmdletsNew-AzADServicePrincipal
eNew-AzADSpCredential
automaticamente geradas, nos scripts que forneciam a senha:New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
Devem ser alterados para recuperar a senha da saída:
$credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb $secPassword = $credential.Secret
Az.Storage (anteriormente Azure.Storage e AzureRM.Storage)
- Para dar suporte à criação de um contexto de armazenamento Oauth com apenas o nome da conta de armazenamento, o conjunto de parâmetros padrão foi alterado para
OAuthParameterSet
- Exemplo:
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- Exemplo:
- O parâmetro
Location
agora é obrigatório no cmdletGet-AzStorageUsage
- Os métodos da API de armazenamento agora usam o padrão assíncrono baseado em tarefas (TAP), em vez de chamadas à API síncronas. Os seguintes exemplos demonstram os novos comandos assíncronos:
Instantâneo de blobs
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
Compartilhar instantâneo
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
Cancelar a exclusão de blob com exclusão reversível
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()
Definir camada do 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)
- Removidas as propriedades preteridas
PSAppServicePlan
,PSCertificate
,PSCloningInfo
ePSSite
dos objetos
Próximas etapas
- Saiba mais sobre o PowerShell no Azure Stack Hub em Introdução ao PowerShell no Azure Stack Hub
- Instale o módulo Az do PowerShell, confira Instalar o módulo Az do PowerShell para o Azure Stack Hub