Executando tarefas no Azure de maneira assíncrona com Start-Job no powershell

Guido OliveiraAzure, PowershellLeave a Comment

Olá pessoal,

Venho trabalhado com Azure há 4 anos e sempre administrei as subscrições usando Powershell. Uma das coisas que me frustrava muito era trabalhar de forma assíncrona com os comandos do modulo do AzureRm. Para trabalhar de maneira assíncrona para realizar tarefas paralelamente iremos utilizar os comandos Start-Job, Wait-Job e Receive-Job.

Primeiro Autentique sua conexão com o comando Add-AzureRmAccount e selecione a subscrição desejada, em seguida, vamos agora armazenar o contexto da conexão em uma variável:

$Context = Get-AzureRmContext

Agora vamos criar um Job novo usando Start-Job e passando como argumento para o scriptblock o contexto armazenado no passo anterior:

Start-Job -Name 'Azure1' -ArgumentList $Context -ScriptBlock {
  Param($Context)
  Select-AzureRmContext -InputObject $Context
  New-AzureRmPublicIpAddress -Name 'Resource-pip' -ResourceGroupName 'ResourceGroup1' -Location 'brazilsouth' -AllocationMethod Dynamic
}

Com o comando Wait-Job iremos aguardar a conclusão do job

Get-Job | Wait-Job

Utilizaremos o Receive-Job para recuperar o resultado do scriptblock

Get-Job | Receive-Job

 

Resultado final:

#Armazena o contexto de conexão da sessão na variavel
$Context = Get-AzureRmContext

#Inicia o Job Azure1 passando como argumento o contexto autenticado para dentro do scriptblock
Start-Job -Name 'Azure1' -ArgumentList $Context -ScriptBlock {
  Param($Context)
  Select-AzureRmContext -InputObject $Context
  New-AzureRmPublicIpAddress -Name 'Resource-pip' -ResourceGroupName 'ResourceGroup1' -Location 'brazilsouth' -AllocationMethod Dynamic
}

#Aguarda o Job ficar com Status Completed
Get-Job | Wait-Job

#Visualizar os Resultados
Get-Job | Receive-Job

 

Nesse post vimos como utilizar os comandos Start-Job, Wait-Job e Receive-Job para trabalhar de maneira assíncrona com os comandos do modulo AzureRm.

 

Dúvidas? Sugestões? Comente!

Até a proxima!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.