Executar cmdlets do Azure PowerShell nos Trabalhos do PowerShell

O Azure PowerShell depende da conexão com uma nuvem do Azure e da espera de respostas. Portanto, a maioria desses cmdlets bloqueia a sessão do PowerShell até receber uma resposta da nuvem. Os trabalhos do PowerShell permitem executar cmdlets em segundo plano ou realizar várias tarefas no Azure de uma vez, em uma só sessão do PowerShell.

Este artigo é uma breve visão geral de como executar cmdlets do Azure PowerShell como Trabalhos do PowerShell e verificar a conclusão. A execução de comandos no Azure PowerShell requer o uso de contextos do Azure PowerShell, abordados detalhadamente em contextos e credenciais de entrada do Azure. Para saber mais sobre Trabalhos do PowerShell, confira Sobre Trabalhos do PowerShell.

Contextos do Azure com trabalhos do PowerShell

Os Trabalhos do PowerShell são executados como processos separados sem uma sessão do PowerShell anexada, portanto, suas credenciais do Azure devem ser compartilhadas com eles. As credenciais são passadas como objetos de contexto do Azure, usando um destes métodos:

  • Persistência de contexto automática. A persistência de contexto é habilitada por padrão e preserva suas informações de conexão em várias sessões. Com a persistência de contexto habilitada, o contexto do Azure atual é passado para o novo processo:

    Enable-AzContextAutosave # Enables context autosave if not already on
    $vmadmin = Get-Credential
    
    Start-Job {
      New-AzVM -Name MyVm -Credential $Using:vmadmin
    }
    
  • Forneça um objeto de contexto do Azure com qualquer cmdlet do Azure PowerShell que tenha um parâmetro AzContext:

    $context = Get-AzContext -Name 'mycontext' # Get an Azure context object
    $vmadmin = Get-Credential
    
    $job = Start-Job {
      New-AzVM -Name MyVm -AzContext $Using:context -Credential $Using:vmadmin
    }
    

    O parâmetro AzContext será necessário se a persistência de contexto estiver desabilitada.

  • Use o parâmetro AsJob fornecido por alguns cmdlets do Azure PowerShell. Essa opção inicia automaticamente o cmdlet como um Trabalho do PowerShell, usando o contexto do Azure ativo:

    $vmadmin = Get-Credential
    $job = New-AzVM -Name MyVm -Credential $vmadmin -AsJob
    

    Para ver se um cmdlet dá suporte ao AsJob, confira a respectiva documentação de referência. O parâmetro AsJob não requer que o salvamento automático de contexto esteja habilitado.

Você pode verificar o status de um trabalho em execução com o cmdlet Get-Job. Para obter a saída de um trabalho até o momento, use o cmdlet Receive-Job.

Para verificar o progresso de uma operação remotamente no Azure, use os cmdlets Get associados ao tipo de recurso que está sendo modificado pelo trabalho:

$vmadmin = Get-Credential
$context = Get-AzContext -Name 'mycontext'
$vmName = 'MyVm'

$job = Start-Job {
  New-AzVM -Name $Using:vmName -AzContext $Using:context -Credential $Using:vmadmin
}

Get-Job -Id $job.Id
Get-AzVM -Name $vmName

Consulte Também