[Powershell] O básico da linguagem e como declarar variaveis

Boa tarde a todos,

No meu último artigo eu descrevi o quanto o Powershell foi importante na minha vida para mudar a forma como eu tratava os meus problemas no trabalho, então nesse artigo eu gostaria de trazer o básico sobre a linguagem de uma forma resumida, e com alguns gatilhos para que todos entendam o mais rápido possível a capacidade do powershell, então vamos começar já com a mão na massa.

O que é importante você saber antes de começar a usar o powershell?

  • O powershell é uma linguagem script utilizada para automação de tarefas;
  • É uma linguagem auto tipada portanto na maioria dos seus scripts não será necessário declarar o tipo da variável (string, int, double...), porém é possível tipar caso necessário;
  • Existem comandos que são chamados de CMDLETS e é comum no powershell que todo retorno de um Cmdlet retorne como objeto;
  • Não é necessário saber fazer json querys ou xpaths, e outros tipos de queries para trabalhar com powershell, ele já traduz as estruturas de dados universais para que você se preocupe apenas com os objetos;

Onde se encontra o Powershell?

Ultimamente existem duas versões do Powershell homologadas pela Microsoft, a versão 5.1 Windows Powershell (Desktop) que já vem com o Windowns, e a versão 7 (Core) que é possível fazer o download através do repositório oficial (Powershell 7 Github).

Diferenças entre as duas

A Core é desenvolvida em código aberto a linguagem por trás é a .Net Core, tem sido desenvolvida em conjunto com a comunidade e possui integração melhor com APIs REST e as linguagens de estrutura JSON/XML, também é possível rodar a maior parte dos comandos da Core em outros sistemas operacionais como Unix, a desvantagens da Core é que é necessário instala-la por fora, alguns módulos da Desktop por serem desenvolvidos com o .Net Framework não possuem suporte para o Core e não há uma IDE integrada com a instalação como acontece na Desktop que possui o Powershell ISE, é necessário usar uma IDE a parte onde o VSCode se integra muito bem por isso eu fortemente recomendo a instalação do Core, porém para as operações que utilizaremos hoje a Desktop nos atenderá da mesma forma.

Windows Powershell e Windows Powershell ISE

O Windows Powershell é o prompt onde os comandos serão executados, porém para termos um ambiente de desenvolvimento de código o Powershell ISE (Integrated Script Envoriment) é o mais recomendado.

É possível abrir a ferramenta usando o iniciar e escrevendo Powershell ISE, Powershell ISE Uma tela parecida com a da imagem abrirá, onde eu circulei com minha destreza excepcional é uma seta que permite abrir a janela de scripts. Para saber mais sobre a console do Powershell ISE clique aqui.

Powershell ISE Agora que temos nossa janela de scripts aberta, podemos começar com o nosso Hello World.

Variáveis

Para declarar uma variável no powershell basta usar o $ seguido da palavra que você pretende utilizar como variável, em seguida é possível usar o = para que sua variável receba algum valor, strings normalmente usam "" (aspas duplas) e números não precisam de aspas.

$exemplo = "Hello World"

Para imprimir uma variável, basta escrevê-la em algum ponto do script onde ela já tenha valor armazenado.

$exemplo = "Hello World"
$exemplo

Para executar o seu script, aperte o botão Play verde no menu de execução ou aperte F5.

Acredito que tivemos a nossa primeira execução!

Note que o prompt do powershell continua ativo e com o histórico escrito, isso é porque o ISE nada mais é do que uma integração de script para o powershell, quem executa as instruções é o prompt, inclusive é possível imprimir o valor da variável $exemplo direto do prompt após executado o script.

Agora uma coisa que é importante notar, o Powershell atribuiu a nossa variável $exemplo o tipo Object.String, isso significa que a nossa variável se comporta como um objeto e também como uma string, em como outras linguagens de programação cada tipo de variável carrega funções próprias do seu tipo no powershell não é diferente, para ver essas funções basta voltar a tela de script e na linha do $exemplo digitar .. Automaticamente o ISE nos trás um intellisense que ajuda a completar a variável com alguma função, caso você feche o quadro do intellisense no ISE, basta digitar Ctrl+Espaço para que ela reapareça.

$exemplo = "Hello World"
$exemplo.GetType()

Vocês podem apagar uma linha caso queiram, mas caso queiram comentar uma linha no powershell há duas maneiras.

Usando o # é possível comentar uma linha inteira, e usando <# #> é possível comentar um bloco de código.

Mas não é só isso, as variáveis podem ainda receber, numéricos, listas, objetos, lista de objetos, e retorno dos cmdlets, seguem alguns exemplos.

Numéricos $numeros = 123 $numeros Listas $lista = 1, 2, 3, "quatro" $lista (As listas podem ser de qualquer tipo ou misturadas) Objetos $pessoa = @{nome = "Felipe"; idade = 30} $pessoa.nome $pessoa Lista de Objetos $pessoa = @{nome = "Felipe"; idade = 30},@{nome = "Jose"; idade = 10} $pessoa Cmdlets $processos = Get-Process $processos

É importante lembrar que o Powershell reserva algumas variáveis que ele mesmo faz a gestão para uso próprio, então não é possível a utilização dessas variáveis (Variaveis).

Agora antes de terminarmos o artigo, o powershell possui uma inteligência que distribui o retorno de uma função split() em variáveis diferentes vamos ver?

$exemplo = "Hello World"
#$exemplo.GetType()

$a, $b = $exemplo.split(" ")
"$b $a"

Agora se você chegou até aqui, eu aposto que você já quer testar essa linguagem alem do que eu consigo te ensinar em um artigo simples, então, se você ficou animado curioso e já pretende sair usando o powershell alem do que eu pude ensinar aqui, segue a documentação da ferramenta que eu aposto que você vai amar: O que é o PowerShell?

Agora se quiser esperar, pretendo no próximo artigo trazer exemplos de operações de lógica de programação com Powershell, dar exemplos de If's foreach's e tudo mais.

Até a próxima.

muito legal o powershell, eu fiz um clipboard compartilhado, fiz um servidor simples em java com um repositorio de strings e fiz no powershell um script para que quando eu copiasse algo ele mandasse pro servidor e se o servidor mudasse o clipboard, o do pc mudava tbm, se tiver uns 5 pc com o script do powershell na mesma rede do servidor, os 5 vão ter clipboard compartilhado, é incrivel que até Request http da de fazer por ele de forma bem simples, as coisas fluem nele, tem como utilizar ele de forma mais automática? tipo criar uma build ou algo assim.

é possível converter scripts para exe, porem nisso eu não tenho tanta experiência ainda... mas seu usecase é muito bacana! parabéns!

Muito bom. Eu consigo automatizar tarefas do AD, como criação de usuários já colocando eles nos grupos, pelo PowerShell?

sim, se você já possui o active directory instalado na estação, basta usar os modulos do que já vem com o ad. o comando que você está procurando é Add-adGroupMember -identity GRUPO -members LOGINDOCLIENTE é possível fazer todas as operações do Ad com o powershell.