Executar cmdlets do Azure PowerShell em Jobs do PowerShell
O Azure PowerShell depende da conexão a uma nuvem do Azure e da espera por respostas, portanto, a maioria desses cmdlets bloqueia sua sessão do PowerShell até obter uma resposta da nuvem. Os Jobs do PowerShell permitem executar cmdlets em segundo plano ou realizar várias tarefas no Azure simultaneamente, numa única sessão do PowerShell.
Este artigo é uma breve visão geral sobre como executar cmdlets do Azure PowerShell como tarefas do PowerShell e verificar a sua conclusão. A execução de comandos no Azure PowerShell requer o uso de contextos do Azure PowerShell, que são abordados em detalhes em contextos do Azure e credenciais de entrada. Para saber mais sobre Trabalhos do PowerShell, consulte 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 anexada do PowerShell, 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 automática do contexto. A persistência de contexto é habilitada por padrão e preserva suas informações de entrada em várias sessões. Com a persistência de contexto habilitada, o contexto atual do Azure é 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 }
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 a sua documentação de referência. O parâmetro AsJob não requer que o salvamento automático de contexto seja 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é agora, use o cmdlet Receive-Job.
Para verificar o progresso de uma operação remotamente no Azure, use os Get
cmdlets 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
Ver também
Azure PowerShell