Partilhar via


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

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.