Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Sugestão] Aula 04 - Jobs - Exercicio 11. Instalando features de forma paralela

No exercicio eu nao quis instalar nenhuma feature entao simulei o mesmo conceito do script mas para contar a quantidade de arquivos dentro de diretorios passados:

function Get-FileCountInDirectories {
  param(
    [String[]] $directories    
  )
  

  $jobScriptBlock = {
        param(
            [String] $directory            
        )

         (gci -File $directory).Count         
  }

  $directories | ForEach-Object { 
    Start-Job -Name "JOB_$_" -ScriptBlock $jobScriptBlock -ArgumentList ($_)  > $null 
    
  }     

  $directories | ForEach-Object {     
    Wait-Job "JOB_$_" > $null
    Receive-Job "JOB_$_"
    } 

}

Uso:
PS C:\Repos\projetos\powershell> . .\FileCountInDirectories.ps1
PS C:\Repos\projetos\powershell> Get-FileCountInDirectories -directories @("C:\Repos\projetos\powershell", "C:\tmp")
5
4

1 resposta

Oi, Fernando. Tudo bem com você?

A sua adaptação da atividade ficou excelente. Você aplicou o conceito central do uso de Jobs para executar tarefas assíncronas, ajustando a ideia original para contagem de arquivos em diretórios com a função Get-FileCountInDirectories. O fluxo de criação com Start-Job, a espera com Wait-Job e a coleta dos resultados com Receive-Job funcionam perfeitamente para essa proposta.

Como você pensa em aplicar esse conceito de processamento em outros scripts do seu dia a dia?

Parabéns pelo empenho na resolução do exercício e por adaptar o aprendizado ao seu contexto. Conte com o fórum caso precise de ajuda ou queira compartilhar mais soluções.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!