DEV Community

Powershell + BATs

O uso de um script Powershell pode não ser muito pratico para alguns usuários, ao contrario de uma BAT (arquivo de lotes do Windows), que pode ser iniciada clicando.

Para contextualizar, eu trabalhei em alguns locais que dentro da equipe de suporte eu era um dos poucos que tinha uma intimidade maior com a linha de comando, e para não limitar o uso das automações, tomamos como padrão que elas seriam iniciadas por BATs.
Assim, mesmo alguém do administrativo poderia utilizar algumas automações de forma simples, apenas clicando nelas.

Mas o processo de ficar escrevendo uma BAT para cada programa era algo um pouco chato, então cheguei num modelo e criei uma função para automatizar a criação das BATs.

Como exemplo, vou utilizar a que cria BATs dentro de um processo de automação de instalações.
Para utilizar ela, vamos precisa de algumas informações:

  1. O nome do programa que vamos instalar
  2. O caminho para o PS1 com a automação da instalação
  3. A versão do projeto
  4. O caminho onde queremos salvar a BAT

Certo, mas como vamos escrever essa BAT?
Basicamente, temos um texto base do script com alguns pontos chaves. Salvamos ele dentro de uma variável, como uma string qualquer, e alteramos os valores utilizando variáveis.
No fim, criamos um arquivo com esse conteúdo e com a extensão BAT.

Nosso código vai ficar um pouco bagunçado, já que não conseguimos indentar corretamente nosso código para manter a formatação da BAT, mas ele fica assim:

Esse projeto pode parecer meio maluco, mas na verdade ele faz parte de um ainda mais. Explicando um pouco, teve um cenário onde fazia muito sentido ter um executável para instalar programas de forma silenciosa, mas qual a forma mais fácil de fazer isso?

Na minha visão na época, escrever um script em Powershell que escreveria:

  1. Um script Powershell de instalação
  2. Uma BAT para executar esse script
  3. Um script em GO para iniciar a BAT

Depois de escrever cada um deles, faz a compilação do executável em GO e com isso permite o uso do EXE como queríamos.

Provavelmente existem formas melhores de se fazer isso, já que reconheço a enorme gambiarra, mas sem dúvidas foi um projeto bem divertido.

Caso queira ler, publiquei no meu GITHUB.

Top comments (0)