Manter credenciais do utilizador nas sessões do PowerShell
Aviso
O módulo AzureRM PowerShell foi oficialmente preterido a partir de 29 de fevereiro de 2024. Os usuários são aconselhados a migrar do AzureRM para o módulo Az PowerShell para garantir suporte e atualizações contínuos.
Embora o módulo AzureRM ainda possa funcionar, ele não é mais mantido ou suportado, colocando qualquer uso continuado a critério e risco do usuário. Consulte nossos recursos de migração para obter orientação sobre a transição para o módulo Az.
O Azure PowerShell oferece uma funcionalidade chamada Gravação Automática de Contexto do Azure, que lhe oferece as seguintes funcionalidades:
- Retenção de informações de início de sessão para serem reutilizadas em novas sessões do PowerShell.
- Utilização mais fácil de tarefas em segundo plano para executar os cmdlets de execução longa.
- Alternar entre contas, subscrições e ambientes sem um início de sessão separado.
- Execução de tarefas com credenciais e subscrições diferentes, em simultâneo, a partir da mesma sessão do PowerShell.
Contextos do Azure definidos
Um contexto do Azure é um conjunto de informações que define o destino dos cmdlets do Azure PowerShell. O contexto é composto por cinco partes:
- Uma Conta - o Nome de Utilizador ou Principal de serviço utilizado para autenticar as comunicações com o Azure
- Uma Subscrição - a subscrição do Azure com os Recursos que estão a ser alterados.
- Um Locatário - O locatário do Microsoft Entra que contém sua assinatura. Os inquilinos são mais importantes para a autenticação do Principal de Serviço.
- Um Ambiente - a cloud de destino específica do Azure, normalmente, a Cloud global do Azure. No entanto, a definição do ambiente permite-lhe visar também uma cloud Nacional, do Government e no local (Azure Stack).
- Credenciais - as informações utilizadas pelo Azure para verificar a sua identidade e confirmar a sua autorização para aceder a recursos no Azure
Em versões anteriores, um Contexto do Azure tinha de ser criado sempre que abria uma nova sessão do PowerShell. A partir do Azure PowerShell v4.4.0, os contextos do Azure podem ser guardados automaticamente sempre que abrir uma nova sessão do PowerShell.
Guardar automaticamente o contexto para o próximo início de sessão
Nas versões 6.3.0 e posteriores, o Azure PowerShell mantém as informações de contexto automaticamente entre sessões. Para definir o PowerShell para que esqueça o contexto e as credenciais, utilize Disable-AzureRmContextAutoSave
. Terá de iniciar sessão no Azure sempre que abrir uma sessão do PowerShell.
Para permitir que o Azure PowerShell se lembre do contexto depois de fechar a sessão do PowerShell, utilize Enable-AzureRmContextAutosave
. As informações de contexto e as credenciais são guardadas automaticamente numa pasta oculta especial no seu diretório de utilizador (%AppData%\Roaming\Windows Azure PowerShell
). Cada nova sessão do PowerShell visa o contexto utilizado na sua última sessão.
Os cmdlets que lhe permitem gerir contextos do Azure também permitem o controlo detalhado. Se pretender que as alterações sejam aplicadas apenas à sessão atual do PowerShell (âmbito Process
) ou a cada sessão do PowerShell (âmbito CurrentUser
). Estas opções são abordadas detalhadamente em Utilizar Âmbitos de Contexto.
Executar os cmdlets do Azure PowerShell como tarefas em segundo plano
A funcionalidade Gravação Automática de Contexto do Azure permite-lhe também partilhar o contexto com tarefas do PowerShell em segundo plano. O PowerShell permite-lhe iniciar e monitorizar tarefas de execução longa como tarefas em segundo plano, sem ter de aguardar a conclusão das tarefas. Pode partilhar as credenciais com tarefas em segundo plano de duas formas diferentes:
Passar o contexto como um argumento
A maioria dos cmdlets do AzureRM permitem-lhe passar o contexto como um parâmetro para o cmdlet. Pode passar um contexto para uma tarefa em segundo plano, conforme mostrado no exemplo seguinte:
$job = Start-Job { param ($ctx) New-AzureRmVm -AzureRmContext $ctx [... Parâmetros adicionais ...]} -ArgumentList (Get-AzureRmContext)
- Using the default context with Autosave enabled
If you have enabled **Context Autosave**, background jobs automatically use the default saved
context.
```powershell
$job = Start-Job { New-AzureRmVm [... Additional parameters ...]}
Quando precisar de saber o resultado da tarefa em segundo plano, utilize Get-Job
para verificar o estado da tarefa e Wait-Job
para aguardar a conclusão da tarefa. Utilize Receive-Job
para capturar ou apresentar o resultado da tarefa em segundo plano. Para obter mais informações, veja about_Jobs.
Criar, selecionar, mudar o nome e remover contextos
Para criar um contexto, tem de ter sessão iniciada no Azure. O cmdlet Connect-AzureRmAccount
(ou o respetivo alias, Login-AzureRmAccount
) define o contexto predefinido utilizado por cmdlets do Azure PowerShell e permite-lhe aceder a quaisquer inquilinos ou subscrições permitidos pelas suas credenciais.
Para adicionar um novo contexto após o início de sessão, utilize Set-AzureRmContext
(ou o respetivo alias, Select-AzureRmSubscription
).
Set-AzureRMContext -Subscription 'Contoso Subscription 1' -Name 'Contoso1'
O exemplo anterior adiciona um novo contexto que visa “Contoso Subscription 1”, com as suas credenciais atuais. O novo contexto tem o nome “Contoso1”. Se não indicar um nome para o contexto, é utilizado um nome predefinido, com o ID da conta e o ID da subscrição.
Para mudar o nome de um contexto existente, utilize o cmdlet Rename-AzureRmContext
. Por exemplo:
Rename-AzureRmContext '[user1@contoso.org; 123456-7890-1234-564321]' 'Contoso2'
Este exemplo muda o nome do contexto com o nome automático [user1@contoso.org; 123456-7890-1234-564321]
para o nome simples “Contoso2”. Os cmdlets que gerem contextos também utilizam a conclusão de tabulação, permitindo-lhe selecionar rapidamente o contexto.
Por último, para remover um contexto, utilize o cmdlet Remove-AzureRmContext
. Por exemplo:
Remove-AzureRmContext Contoso2
Esquece o contexto ao qual foi dado o nome “Contoso2”. Pode recriar este contexto com Set-AzureRmContext
Remover credenciais
Pode remover todas as credenciais e os contextos associados de um utilizador ou principal de serviço, com Disconnect-AzureRmAccount
(também conhecido como Logout-AzureRmAccount
). Quando executado sem parâmetros, o cmdlet Disconnect-AzureRmAccount
remove todas as credenciais e os contextos associados ao Utilizador ou Principal de Serviço no contexto atual. Pode passar um Nome de Utilizador, Nome do Principal de Serviço ou contexto para visar um determinado principal.
Disconnect-AzureRmAccount user1@contoso.org
Utilizar âmbitos de contexto
Ocasionalmente, poderá querer selecionar, alterar ou remover um contexto de uma sessão do PowerShell sem afetar outras sessões. Para alterar o comportamento predefinido de cmdlets de contexto, utilize o parâmetro Scope
. O âmbito Process
substitui o comportamento predefinido, fazendo-o aplicar-se só à sessão atual. Por outro lado, o âmbito CurrentUser
altera o contexto em todas as sessões, em vez de apenas na sessão atual.
Por exemplo, para alterar o contexto predefinido na sessão atual do PowerShell sem causar impacto noutras janelas ou no contexto utilizado da próxima vez que abrir uma sessão, utilize:
Select-AzureRmContext Contoso1 -Scope Process
Como a definição de gravação automática do contexto é memorizada
A definição de Gravação Automática do contexto é guardada no diretório do Azure PowerShell do utilizador (%AppData%\Roaming\Windows Azure PowerShell
). Alguns tipos de contas de computador podem não ter acesso a este diretório. Para estes cenários, pode utilizar a variável de ambiente
$env:AzureRmContextAutoSave=$true
Quando definido como $true
, o contexto é salvo automaticamente. Se definido como $false
, o contexto não será salvo.
Alterações ao módulo AzureRM.Profile
Novos cmdlets para gerir o contexto
- Enable-AzureRmContextAutosave - permite guardar o contexto entre sessões do Powershell. Quaisquer alterações alteram o contexto global.
- Disable-AzureRmContextAutosave - desativa a gravação automática do contexto. Em cada nova sessão do PowerShell, é pedido ao utilizador que inicie sessão novamente.
- Select-AzureRmContext - seleciona um contexto como predefinição. Todos os cmdlets utilizam as credenciais neste contexto para a autenticação.
- Disconnect-AzureRmAccount - remove todas as credenciais e os contextos associados a uma conta.
- Remove-AzureRmContext - remove um contexto nomeado.
- Rename-AzureRmContext - muda o nome de um contexto existente.
Alterações aos cmdlets do perfil existente
- Add-AzureRmAccount - permite o controlo do âmbito do início de sessão para o processo ou utilizador atual. Permitir nomear o contexto predefinido após a autenticação.
- Import-AzureRmContext - permite o controlo do âmbito do início de sessão para o processo ou utilizador atual.
- Set-AzureRmContext - permite a seleção de contextos nomeados existentes e alterações de âmbito no processo ou utilizador atual.