<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Microsoft Learn Student Ambassadors Latam</title>
    <description>The latest articles on DEV Community by Microsoft Learn Student Ambassadors Latam (@msplatam).</description>
    <link>https://dev.to/msplatam</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F1333%2F8b0b3f6a-f724-4c98-b17e-26bb8f4b9807.png</url>
      <title>DEV Community: Microsoft Learn Student Ambassadors Latam</title>
      <link>https://dev.to/msplatam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/msplatam"/>
    <language>en</language>
    <item>
      <title>Powershell + BATs</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Fri, 12 Feb 2021 17:04:27 +0000</pubDate>
      <link>https://dev.to/msplatam/powershell-bats-55oi</link>
      <guid>https://dev.to/msplatam/powershell-bats-55oi</guid>
      <description>&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;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. &lt;br&gt;
Assim, mesmo alguém do administrativo poderia utilizar algumas automações de forma simples, apenas clicando nelas. &lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;O nome do programa que vamos instalar&lt;/li&gt;
&lt;li&gt;O caminho para o PS1 com a automação da instalação&lt;/li&gt;
&lt;li&gt;A versão do projeto&lt;/li&gt;
&lt;li&gt;O caminho onde queremos salvar a BAT&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Certo, mas como vamos escrever essa BAT? &lt;br&gt;
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. &lt;br&gt;
No fim, criamos um arquivo com esse conteúdo e com a extensão BAT. &lt;/p&gt;

&lt;p&gt;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: &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;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? &lt;/p&gt;

&lt;p&gt;Na minha visão na época, escrever um script em Powershell que escreveria: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Um script Powershell de instalação&lt;/li&gt;
&lt;li&gt;Uma BAT para executar esse script&lt;/li&gt;
&lt;li&gt;Um script em GO para iniciar a BAT&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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. &lt;/p&gt;

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

&lt;p&gt;Caso queira ler, publiquei no meu &lt;a href="https://github.com/IGDEXE/Silent-Install-Packages"&gt;GITHUB&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Automatizando a instalação de software</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Thu, 11 Feb 2021 18:27:58 +0000</pubDate>
      <link>https://dev.to/msplatam/automatizando-a-instalacao-de-software-1m7f</link>
      <guid>https://dev.to/msplatam/automatizando-a-instalacao-de-software-1m7f</guid>
      <description>&lt;p&gt;O processo de instalação de software no Windows tende ser algo muito simples, normalmente apenas ficar clicando em próximo até que se complete, mas será que temos uma forma de automatizar isso? &lt;/p&gt;

&lt;p&gt;A resposta é sim, seja para instalar de forma silenciosa como vamos debater aqui ou clicando nas opções, o que podemos conversar mais tarde sobre, só que utilizando Python. &lt;/p&gt;

&lt;p&gt;O processo de instalação silencioso depende muito do fabricante do instalador, já que é ele quem vai adicionar ou não o suporte, e principalmente a qualidade das informações e utilização. &lt;/p&gt;

&lt;p&gt;Caso o instalador seja um .MSI o processo vai ser bem mais simples, já que esse pacote é feito para facilitar esse processo, mas podemos também fazer com executáveis. Recomendo que para o que planeja utilizar, busque com o fabricante quais as opções necessárias. &lt;/p&gt;

&lt;p&gt;Como queremos escrever um script genérico de instalação, vamos abstrair um pouco esse processo. O processo basicamente, é verificar se o programa já existe, caso não, pegamos nosso instalador e executamos ele. &lt;/p&gt;

&lt;p&gt;Mas quais as informações que precisamos para fazer isso? &lt;br&gt;
Para organização, o nome do Software é muito importante. &lt;br&gt;
O caminho e nome do instalador também é algo bem importante, resolvi separar os dois, para o caso onde tenha uma pasta padrão de instaladores. &lt;br&gt;
Os parâmetros são a parte mais chata, já que eles variam conforme o fabricante. &lt;br&gt;
Por fim, para sabermos se o program já está instalado, vamos validar pela pasta onde normalmente fica instalado (sim, não é a melhor forma, mas no começo já é algo).&lt;/p&gt;

&lt;p&gt;Tendo todas as informações, vamos ao processo: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Copiar o instalador para uma pasta local&lt;/li&gt;
&lt;li&gt;Executar o instalador com o parâmetro&lt;/li&gt;
&lt;li&gt;Validar se o processo foi concluído ou não&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Traduzindo para Powershell, temos:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Como esse processo pode ser um pouco abstrato, vou deixar de exemplo como seria a instalação do Adobe Reader&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Alguns pontos de melhoria relevantes que podem ficar de lição de casa: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fazer o download do instalador do site do fabricante em vez de uma pasta num servidor&lt;/li&gt;
&lt;li&gt;Validar de uma forma mais precisa se o programa está instalado&lt;/li&gt;
&lt;li&gt;Adicionar LOGs na instalação, como verificar o tempo decorrido&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>systems</category>
    </item>
    <item>
      <title>WSL: Instalando Linux no Windows</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Wed, 10 Feb 2021 12:15:09 +0000</pubDate>
      <link>https://dev.to/msplatam/wsl-instalando-linux-no-windows-4a7k</link>
      <guid>https://dev.to/msplatam/wsl-instalando-linux-no-windows-4a7k</guid>
      <description>&lt;p&gt;Seguindo a linha de quem melhor pode explicar sobre algo é seu criador, vamos definir WSL como: &lt;/p&gt;

&lt;p&gt;"O Subsistema do Windows para Linux permite que os desenvolvedores executem um ambiente GNU/Linux, incluindo a maioria das ferramentas de linha de comando, utilitários e aplicativos, diretamente no Windows, sem modificações e sem a sobrecarga de uma máquina virtual tradicional ou instalação dualboot."&lt;/p&gt;

&lt;p&gt;Essa explicação e mais detalhes estão disponíveis na &lt;a href="https://docs.microsoft.com/pt-br/windows/wsl/about"&gt;documentação oficial&lt;/a&gt;, que como sempre recomendo a leitura. &lt;/p&gt;

&lt;p&gt;Nesse artigo, não vamos entrar muito no mérito de como utilizar ou o que exatamente é ele, e sim em como podemos fazer a instalação de forma automatizada pelo Powershell. &lt;/p&gt;

&lt;p&gt;Eu escrevi esse script para uma aula de Sistemas Operacionais da Fatec, como um tutorial de instalação do Ubuntu já que não queria utilizar uma maquina virtual e me parecia interessante mostrar que dentro do Windows 10 podemos fazer coisas bem legais. &lt;/p&gt;

&lt;p&gt;Inicialmente, vamos verificar se já temos o WSL disponível no sistema. Caso ela não esteja, fazemos a instalação e orientamos que o usuário reinicie o computador para que ela fiquei totalmente habilitada. &lt;/p&gt;

&lt;p&gt;Depois disso, vamos fazer o download do sistema operacional, que em nosso exemplo vai ser o Ubuntu 1604. Salvamos o artefato como um APPX conforme está disponível no site da Microsoft. &lt;/p&gt;

&lt;p&gt;Concluído o download, fazemos a instalação e apagamos o arquivo. &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Assim deixamos disponível um terminal Linux para utilização dentro do Windows 10. &lt;/p&gt;

&lt;p&gt;Recomendo isso caso precise treinar comandos ou brincar um pouco com o sistema. No caso da aula, serviu ao proposito de treinar alguns comandos. &lt;/p&gt;

</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>linux</category>
    </item>
    <item>
      <title>Importando módulos</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Tue, 09 Feb 2021 17:12:50 +0000</pubDate>
      <link>https://dev.to/msplatam/importando-modulos-4n64</link>
      <guid>https://dev.to/msplatam/importando-modulos-4n64</guid>
      <description>&lt;p&gt;Para começar, é importante entendermos o que são módulos. &lt;br&gt;
Para facilitar, de uma maneira bem simplificada, módulos são um conjunto de funções, normalmente "temáticos", como exemplo temos o modulo de gerenciamento do Azure, com diversas funções relacionados ao gerenciamento de recursos nele. &lt;/p&gt;

&lt;p&gt;Para saber mais sobre módulos, recomendo verificar a &lt;a href="https://docs.microsoft.com/pt-br/powershell/module/microsoft.powershell.core/about/about_modules?view=powershell-7.1"&gt;documentação&lt;/a&gt; oficial. &lt;/p&gt;

&lt;p&gt;A ideia desse artigo, é mostrar uma forma de automatizarmos o processo de importação e/ou instalação de um, por meio de uma função que vai validar se ele já está disponível para importar ou se precisa instalar antes disso. &lt;/p&gt;

&lt;p&gt;Para sabermos se ele já está disponível, vamos consultar o nome dele na lista de módulos disponíveis no equipamento. Caso ele esteja, fazemos apenas o processo de importação, mas caso não, primeiro instalamos e depois importamos. &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Powershell + Alexa, iniciando o dia</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Mon, 08 Feb 2021 12:12:26 +0000</pubDate>
      <link>https://dev.to/msplatam/powershell-alexa-iniciando-o-dia-42d8</link>
      <guid>https://dev.to/msplatam/powershell-alexa-iniciando-o-dia-42d8</guid>
      <description>&lt;p&gt;A ideia desse script veio com uma automação que eu fiz em casa utilizando a Alexa (sim, eu usei Powershell junto com ela, preciso dar uma parada com Powershell? Provável), onde a ideia era pedir para ela abrir alguns programas. &lt;/p&gt;

&lt;p&gt;Sendo mais especifico, minha ideia era falar "Alexa, hora de trabalhar" e ela abrir todos os programas que eu utilizo normalmente, como o Edge e o Teams. &lt;/p&gt;

&lt;p&gt;Para fazer ela funcionar junto com o Powershell, eu usei de base um video, de um canal focado em conteúdos com Alexa: &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/FTxIabp8CRg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Basicamente, eu escrevo um script e passo o caminho dele de parâmetro para o Trigger, com isso, ao criar a rotina com a Alexa ela executa tudo que está no meu script.&lt;/p&gt;

&lt;p&gt;Pode colocar o que fazer sentido para você, como por exemplo, criar uma rotina para abrir paginas Web, desligar o monitor, mandar um e-mail... um amigo chegou a fazer a Alexa executar pull requests.&lt;/p&gt;

&lt;p&gt;Nesse exemplo vamos fazer algo bem simples, meu script inicial para abrir o navegador e o chat da empresa. No navegador, coloquei para abrir o Email corporativo, no caso o site do Outlook para empresas/estudantes.&lt;/p&gt;

&lt;p&gt;No inicio, ele verifica se esses programas já estão abertos, ou seja, ele não vai tentar abrir eles se já estão abertos. Você pode criar um segundo script, e configurar um para encerrar os programas relacionados ao trabalho. &lt;/p&gt;

&lt;p&gt;No lado da rotina da Alexa, coloquei para ligar a luz, ler as noticias do dia e falar minha agenda.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Um detalhe importante, é que esse processo de iniciar cada aplicativo vai ser algo um pouco mais chato, uma vez que precisa ver como pode fazer isso, para cada um dos que pretende utilizar. &lt;/p&gt;

&lt;p&gt;Mas no geral, tende a funcionar colocar o caminho do executável dele. Caso seja algo do sistema, provavelmente vai suportar mais parâmetros. &lt;/p&gt;

</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>alexa</category>
    </item>
    <item>
      <title>Facilitando o monitoramento de conexão</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Fri, 05 Feb 2021 12:35:47 +0000</pubDate>
      <link>https://dev.to/msplatam/facilitando-o-monitoramento-de-conexao-p71</link>
      <guid>https://dev.to/msplatam/facilitando-o-monitoramento-de-conexao-p71</guid>
      <description>&lt;p&gt;Seguindo a ideia apresentado no nosso artigo de &lt;a href="https://dev.to/msplatam/monitorando-com-ping-45ca"&gt;monitoramento com ping&lt;/a&gt;, vamos criar uma função para alterar a cor do terminal quando o equipamento estiver online novamente. &lt;/p&gt;

&lt;p&gt;Enquanto ele está offline, deixaremos vermelho, e quando ficar online, ficara verde. &lt;/p&gt;

&lt;p&gt;Vamos basicamente colocar um teste de conexão dentro de um loop de repetição para validar cada um dos cenários. Para representar as cores, vamos escrever na tela uma barra feita de vários espaços (Exemplo: "      "), alterando a cor de fundo delas.&lt;/p&gt;

&lt;p&gt;Assim que o equipamento responder na rede, mostramos a barra verde e encerramos o loop. &lt;/p&gt;

&lt;p&gt;Para a validação do equipamento, vamos usar a função &lt;a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/test-connection?view=powershell-7.1"&gt;Test-Connection&lt;/a&gt;. &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Como retorno, teremos isso no terminal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qmxtw2xA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ltwujqg0aoeja1g6ksfn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qmxtw2xA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ltwujqg0aoeja1g6ksfn.png" alt="Terminal"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>systems</category>
    </item>
    <item>
      <title>Monitorando com Ping</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Thu, 04 Feb 2021 13:29:02 +0000</pubDate>
      <link>https://dev.to/msplatam/monitorando-com-ping-45ca</link>
      <guid>https://dev.to/msplatam/monitorando-com-ping-45ca</guid>
      <description>&lt;p&gt;Em alguns momentos pode ser necessário verificarmos quando um equipamento está online na rede, como quando reiniciamos remotamente e queremos saber quando poderemos acessar novamente. &lt;br&gt;
Para isso pode ser interessante manter um LOG, ou um registro, dessa validação. &lt;/p&gt;

&lt;p&gt;A ideia do script de hoje, é escrever uma função para ficar com um Ping constante para um determinado computador ou seja, ficar continuamente enviando pacotes e analisando esse processo. Mas além disso, vamos registrar num arquivo de texto todo esse processo. &lt;/p&gt;

&lt;p&gt;Fora o Ping em si, que recomendo a leitura &lt;a href="https://canaltech.com.br/telecom/ping-o-que-e-e-para-que-serve/"&gt;desse artigo&lt;/a&gt;, vamos utilizar uma nova função dentro do Powershell, para salvar tudo que vemos em nossa tela, chamada &lt;a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.host/start-transcript?view=powershell-7.1"&gt;Start-Transcript&lt;/a&gt;. Também vamos alterar o titulo do nosso terminar.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Deixamos no titulo a orientação sobre como encerrar essa função, por meio dos comandos CTRL + C.&lt;/p&gt;

&lt;p&gt;O uso dessa função é muito interessante no cenário que comentei de reiniciar um equipamento remotamente e monitorar quando ele fica online. Com base nele, pode trabalhar em outras coisas como analisar o retorno do comando e mudar a cor do terminal quando o equipamento estiver online novamente. &lt;/p&gt;

</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>systems</category>
    </item>
    <item>
      <title>Pesquisando termos dentro de um texto</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Wed, 03 Feb 2021 16:18:45 +0000</pubDate>
      <link>https://dev.to/msplatam/pesquisando-termos-dentro-de-um-texto-37kg</link>
      <guid>https://dev.to/msplatam/pesquisando-termos-dentro-de-um-texto-37kg</guid>
      <description>&lt;p&gt;O que podemos fazer quando temos uma pasta cheia de textos e queremos saber se neles tem um determinado termo? &lt;br&gt;
Abrir todos eles e ver um a um!!&lt;/p&gt;

&lt;p&gt;Ok, pode não ser eficiente fazer isso manualmente, mas e se escrevermos uma função para fazer isso? &lt;/p&gt;

&lt;p&gt;Podemos deixar o computador fazer essa validação e nos retornar onde e em qual arquivo encontrou ele.&lt;/p&gt;

&lt;p&gt;Para fazer isso vamos utilizar a função &lt;a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string?view=powershell-7.1"&gt;Select-String&lt;/a&gt;, com ela podemos localizar textos, passando como parâmetro o arquivo que vamos verificar e o que queremos encontrar.&lt;/p&gt;

&lt;p&gt;Como esse retorno pode ficar confuso no terminal, vamos gerar um arquivo na mesma pasta, colocando nele a correlação que encontramos.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Com algumas modificações, podemos utilizar essa mesma função para analisar LOGs e encontrar erros.&lt;/p&gt;

</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Interface gráfica com Powershell</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Tue, 02 Feb 2021 18:41:05 +0000</pubDate>
      <link>https://dev.to/msplatam/interface-grafica-com-powershell-1ck0</link>
      <guid>https://dev.to/msplatam/interface-grafica-com-powershell-1ck0</guid>
      <description>&lt;p&gt;Já criamos scripts de backup simples, com funções, com uma forma de acessibilidade, mas será que conseguimos também sair do terminal e deixar ele com uma cara mais de "programa"? &lt;/p&gt;

&lt;p&gt;Com o Powershell podemos criar uma interface gráfica simples, e inegavelmente com uma cara antiga, para os scripts. &lt;br&gt;
É um processo bem trabalhoso mas pode ser útil, então vale a pena compartilhar. &lt;/p&gt;

&lt;p&gt;Vou tentar pelo texto explicar um pouco da ideia geral do que vamos fazer e compartilhar um script super comentado para exemplificar. &lt;/p&gt;

&lt;p&gt;Precisamos ter algumas noção para criar essa interface, a primeira delas é que criaremos um formulário, então vamos pensar que temos uma folha em branco onde precisamos desenhar o que queremos mostrar.&lt;/p&gt;

&lt;p&gt;Para esse exemplo, precisamos desenhar: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Campos de texto não interativos&lt;/li&gt;
&lt;li&gt;Botões que estão sempre visíveis&lt;/li&gt;
&lt;li&gt;Um botão que só vai aparecer quando uma condição for cumprida&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para localizar as pastas, vamos escrever uma função para exibir para o usuário o Windows Explorer e permitir que ele visualmente selecione a pasta que quer salvar e onde quer salvar.&lt;/p&gt;

&lt;p&gt;Para fazer a magica acontecer, vamos interagir com um evento do botão, nesse caso o momento em que o usuário clica nele. Trabalhando com esse evento, deixamos de gatilho para que o trecho do código seja executado somente quando o usuário utilizar.&lt;/p&gt;

&lt;p&gt;Esse script é realmente mais complicado de explicar, mas com o exemplo, acredito que consiga replicar e modificar. &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Precisamos apontar exatamente a posição do que queremos desenhar, o que pode dificultar um pouco o processo de deixar a interface bonita e com uma boa usabilidade. &lt;br&gt;
Um outro ponto de atenção importante, se encerrar o terminal a interface também é fechada. &lt;/p&gt;

&lt;p&gt;Concluindo, acho valido comentar que não é só porque conseguimos fazer, que devemos fazer. Powershell é uma linguagem muito útil para automatizar sistemas, mas nem por isso precisamos fazer tudo com ela. &lt;br&gt;
Uma interface gráfica feita por uma linguagem de programação mais "convencional", provavelmente terá um desempenho, usabilidade e aparência melhores do que vamos conseguir nesse script. &lt;br&gt;
E claro, podemos manter nossa logia de manipulação de sistema feita por scripts e aciona-los nessa interface. &lt;/p&gt;

</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>gui</category>
    </item>
    <item>
      <title>Tornando nossas mensagens mais inclusivas</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Mon, 01 Feb 2021 12:40:05 +0000</pubDate>
      <link>https://dev.to/msplatam/tornando-nossas-mensagens-mais-inclusivas-4fp0</link>
      <guid>https://dev.to/msplatam/tornando-nossas-mensagens-mais-inclusivas-4fp0</guid>
      <description>&lt;p&gt;Seguindo nosso post anterior &lt;a href="https://dev.to/msplatam/ensinando-o-terminal-a-falar-d2l"&gt;sobre como fazer o terminal falar&lt;/a&gt;, vamos melhorar nosso código para evitar a repetição de sempre colocar um &lt;strong&gt;Write-Host&lt;/strong&gt; e o narrador com o mesmo texto. &lt;/p&gt;

&lt;p&gt;Para resolver isso, vamos criar uma pequena função.&lt;br&gt;
Nela vamos receber o texto da mensagem, escrever ela na tela e utilizar o narrador para falar. &lt;/p&gt;

&lt;p&gt;Isso em código, fica assim: &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Para exemplificar o uso pratico disso, vamos aplicar ao MyGIT a versão atualizada dos retornos, ficando assim: &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Pronto, agora podemos deixar nosso script organizado e com os recursos de fala.&lt;/p&gt;

</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Ensinando o terminal a falar</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Fri, 29 Jan 2021 12:58:28 +0000</pubDate>
      <link>https://dev.to/msplatam/ensinando-o-terminal-a-falar-d2l</link>
      <guid>https://dev.to/msplatam/ensinando-o-terminal-a-falar-d2l</guid>
      <description>&lt;p&gt;Dessa vez vamos fazer uma coisa um pouco mais divertida, utilizar o Powershell para sintetizar voz ou seja, vamos fazer nosso script falar. &lt;/p&gt;

&lt;p&gt;Conseguimos fazer isso utilizando um recurso do sistema, então é importante lembrar que a qualidade da pronuncia vai depender da linguagem instalada no sistema. Exemplo, eu estou usando meu Windows em ingles e passando texto em português para ele ler, o que deixa tudo bem engraçado devido a pronuncia. &lt;/p&gt;

&lt;p&gt;Existem alguns usos interessantes para esse recurso, como deixar os retornos dos nossos scripts mais acessíveis, ao não depender unicamente de ler uma tela para saber o que aconteceu. &lt;br&gt;
Um outro que já utilizei, é usar isso em conjunto com formas de se comunicar com outros computadores, criando uma espécie de "radio", podemos trabalhar nessa ideia no futuro.&lt;/p&gt;

&lt;p&gt;Inicialmente, vamos trabalhar no script base para o recurso: &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Com esse script, pode passar como parâmetro uma mensagem para que o terminal leia. Mas vamos tentar colocar isso num cenário mais pratico, utilizando ele para uma resposta em um script nosso.&lt;/p&gt;

&lt;p&gt;Vamos basicamente pegar nosso script que simula a configuração de um repositório GIT local e vamos adicionar aos retornos escritos, o narrador.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Com isso, tornamos nosso script mais inclusivo e divertido. &lt;br&gt;
Eu só não gostei muito da repetição de código com os textos, mas vamos cuidar disso na próxima postagem.&lt;/p&gt;

</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>systems</category>
    </item>
    <item>
      <title>Fazendo download de arquivos</title>
      <dc:creator>Ivo Dias</dc:creator>
      <pubDate>Thu, 28 Jan 2021 14:05:31 +0000</pubDate>
      <link>https://dev.to/msplatam/fazendo-download-de-arquivos-4pk8</link>
      <guid>https://dev.to/msplatam/fazendo-download-de-arquivos-4pk8</guid>
      <description>&lt;p&gt;Em alguns momentos, pode ser preciso que nosso script faça o download de algum componente ou arquivo, como um executável atualizado. &lt;br&gt;
Mas será que podemos fazer isso com Powershell? &lt;/p&gt;

&lt;p&gt;Sim, conseguimos fazer, e pode ser uma solução bem interessante para manter um script de instalação sempre atualizado. Claro que dependemos que a URL esteja atualizada, mas é interessante sabermos como fazer isso. &lt;/p&gt;

&lt;p&gt;Para exemplificar, vamos pegar um ZIP do repositório que mantenho os exemplos que uso nos textos publicados nesse blog e depois vamos descompactar os arquivos. Nesse exemplo vamos simular um pouco do processo que uma ferramenta GIT faria para receber o ambiente e tornar ele disponível localmente.&lt;/p&gt;

&lt;p&gt;Para fazermos o download, utilizaremos a função &lt;a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest?view=powershell-7.1"&gt;&lt;strong&gt;Invoke-WebRequest&lt;/strong&gt;&lt;/a&gt;, informando a URL e o arquivo de saída que queremos.&lt;/p&gt;

&lt;p&gt;Para deixar mais organizado, seguindo com essa ideia de simular uma ferramenta de GIT, vamos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Criar uma pasta na raiz do sistema chamada MyGIT&lt;/li&gt;
&lt;li&gt;Fazer o download no APP data&lt;/li&gt;
&lt;li&gt;Descompactar os arquivos na pasta que criamos&lt;/li&gt;
&lt;li&gt;Limpar nosso download&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para fazermos o processo de descompactar, utilizaremos a função &lt;a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.archive/expand-archive?view=powershell-7.1"&gt;&lt;strong&gt;Expand-Archive&lt;/strong&gt;&lt;/a&gt;, passando como parâmetro o local do arquivo e onde queremos deixar o arquivo descompactado.&lt;/p&gt;

&lt;p&gt;Como isso fica em código?&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Com isso podemos de forma funcional simular esse comportamento de fazer o download das pastas e organizar os arquivos. Claro que não é o único uso, como exemplo vou deixar um script que escrevi para o download e configuração de uma ferramenta:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Com isso podemos tornar nossos scripts mais independentes e minimizando a necessidade de manutenção. Caso tenhamos uma URL sempre atualizada pelo fornecedor, o script não vai precisar de nenhuma alteração para continuar funcionando. &lt;/p&gt;

</description>
      <category>powershell</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>systems</category>
    </item>
  </channel>
</rss>
