Executar cmdlets do Azure PowerShell em Tarefas do PowerShell

O Azure PowerShell depende da ligação a uma cloud do Azure e de aguardar respostas. Por isso, a maioria destes cmdlets bloqueia sua sessão do PowerShell até obterem uma resposta da cloud. Os Trabalhos do PowerShell permitem executar cmdlets em segundo plano ou executar várias tarefas no Azure ao mesmo tempo, de dentro de uma única sessão do PowerShell.

Este artigo é uma breve descrição geral de como executar cmdlets do Azure PowerShell como Tarefas do PowerShell e verificar a conclusão. A execução de comandos no Azure PowerShell requer a utilização de contextos do Azure PowerShell, que são explicados em detalhe no artigo Contextos e credenciais de início de sessão do Azure. Para obter mais informações sobre as tarefas do PowerShell, veja About PowerShell Jobs (Acerca das Tarefas do PowerShell).

Contextos do Azure com tarefas do PowerShell

As Tarefas do PowerShell são executadas como processos separados sem uma sessão do PowerShell associada, pelo que as suas credenciais do Azure têm de ser partilhadas com elas. As credenciais são transmitidas como objetos do Azure, através de um destes métodos:

  • Persistência de contexto automática. A persistência de contexto é ativada por predefinição e preserva as suas informações de início de sessão em várias sessões. Com a persistência de contexto ativada, o contexto atual do Azure é transmitido 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
    }
    

    Se a persistência de contexto estiver desabilitada, o parâmetro AzContext será necessário.

  • 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 ativo do Azure:

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

    Para ver se um cmdlet suporta AsJob, verifique sua documentação de referência. O parâmetro AsJob não requer que o salvamento automático de contexto seja habilitado.

Pode verificar o estado de uma tarefa em execução com o cmdlet Get-Job. Para obter a saída de uma tarefa até ao momento, utilize o cmdlet Receive-Job.

Para verificar o progresso de uma operação remotamente no Azure, utilize os cmdlets Get associados ao tipo de recurso que está a ser modificado pela tarefa:

$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