Automação com Powershell [Corporativo]

Eae Devs

Estou levantando esse tópico junto à vocês e principalmente focado ai na galera de Sistemas/Suporte de TI.

Enfim, queria ver de vocês algumas ideias de projetos de automação utilizando Powershell, sendo focado em um ambiente corporativo, e claro se possível apresentem projetos que vocês já fizeram em outras experiências, pode ser um workflow, uma simples melhoria visando um melhor workflow e etc.

Então cara, não tenho muita experiência com o meio corporativo e nem tô mais no Windows nesse momento, mas quando usava o Windows como meu sistema principal eu comecei a escrever todos os meus scripts pessoais -- pra fazer backup de umas pastas, comprimir minhas pastas arquivadas pra depois mandar pra núvem, um pra puxar todos os meus arquivos do celular via FTP, e outros memezinhos que fiz só pra perder tempo mesmo -- acabei fazendo em Python, porque é mais simples pra mim e com isso eu garanto que esse script vai continuar funcionando tanto no Windows como no Linux, ou na máquina de algum amigo. Além do que, o Python consegue fazer muita coisa só com a standard library. Mas não é sobre isso que você quer ouvir.

A um tempo atrás eu decidi aprender um pouco sobre Powershell também pra não ter uma skill issue tão grande nessa tecnologia, documentei essa mini jornada nesse post, e acho que o Powershell vai acabar sendo útil pra ti do mesmo jeito que Python foi pra mim -- A única diferença é que eu acho que o Powershell consegue fazer ainda mais coisa, comandos como o % e estruturas como o hash map (@{}) são muito boas.

Em outras palavras, eu usaria o Powershell pra automatizar setup e backup, usaria o suporte a JSON, XML e CSV dele pra gerar logs e, dependendo da ocasião, criar uma interface gráfica (já que o Powershell consegue fazer isso por causa da integração com o .NET, se não me engano) pro pessoal da equipe que não está tão acostumada com a interface de linha de comando.

Sobre algum projeto, eu não tenho nenhum, mas já usei o Powershell no Windows pra trabalhar num projeto de Arduino usando o Arduino CLI. Como o Makefile que fiz no Linux não funcionava no Windows, fiz um scriptzinho que emulasse o comportamento dele:

$Conn = New-Object System.IO.Ports.SerialPort COM9, 115200, None, 8, one
$Conn.DtrEnable = $True

$Conn.Open()
Start-Sleep -Seconds 2

while ($True) {
    $Data = $Conn.ReadExisting()

    if ($Data.Length -ne 0) {
        Write-Host $Data
    }

   # These lines will allow you to exit this loop by pressing Q on your keyboard :)
    if ([Console]::KeyAvailable) {
        $key = [Console]::ReadKey($true).Key
        if ($key -eq "q") {
            break
        }
    }

    Start-Sleep -Milliseconds 50
}

$Conn.Close()

Edit: dei uma mini pesquisada no assunto e me deparei um artigo legal que fala sobre como ler e converter arquivos/strings em Markdown pra HTML. Talvez isso seja útil pra ti OP!

Excelente Kevin! Eu entrei na onda do Powershell a pouco tempo também, visando uma automação melhor de algumas coisas no Win Server, Criação de Usuários, Backups e etc. Conteúdo do seu post está excelente, parabéns pela explicação, ta muito bom!