Olá pessoal, tudo bem? Espero que sim!

Chegamos a um assunto muito importante na nossa etapa introdutória ao Powershell: Variáveis.

O que são Variáveis

Variável no contexto de programação é uma estrutura de armazenamento de dados que pode variar ou mudar durante a execução do código programado. Elas possuem valores armazenados que podem ser estáticos ou mutáveis durante o tempo de execução do código.

Por que utilizar Variáveis

As Variáveis facilitam a construção de um código simplificando a chamada de dados, portanto, quando detectamos que vamos utilizar um valor ou cadeia de valores diversas vezes no mesmo código, faz sentido armazená-lo em uma Variável, pois, em vez de declarar este valor novamente pelo código, você apenas vai chamar a Variável de referência para o valor ou cadeia de valores necessário.

Como declarar Variáveis no Powershell

As variáveis no Powershell são representadas pelo cifrão $, seguido por um nome qualquer que pode ser atribuído no momento da declaração.

Obs: Como boa prática, recomendo que toda a vez que você declarar uma Variável, a nomeie com algo que faça sentido para o dado que está sendo armazenado.

Sintaxe: $<nomedavariável> = <valor>

ou

Sintaxe: Set-Variable -Name <nomedavariável> -Value <valor>

Exemplo:

Como observamos no exemplo acima, declaramos o valor “Hello World” para a variável $primeiravariável. Em seguida, verificamos o dado armazenado apenas digitando a Variável declarada e digitando ENTER. O resultado foi o retorno do valor armazenado anteriormente.

Se você deseja substituir o valor de uma variável já declarada, basta declarar um novo valor para ela.

Exemplo:

Obs1: As Variáveis são dados temporários, então, toda a vez que você abrir uma nova console do Powershell você precisará declará-las novamente.

Obs2: Fique atento ao tipo de dado que você vai armazenar em uma Variável. Se você for declarar textos, sempre o declare entre aspas, pois, automaticamente o tipo de valor da Variável será considerado Cadeia de Caracteres (String). Se você for declarar um número, você não precisa colocar entre aspas, assim, a variável automaticamente já considerará o dado como Inteiro (Int32).

Escopos de Variável

Quando declaramos uma Variável, o seu tempo de vida útil dura somente no período de execução do código. Quando falamos sobre o Escopo de Variáveis, estamos falando dos limites de atuação que a Variável está habilitada a ser trabalhada, ou o quanto podemos utilizá-la e reutilizá-la durante a execução do shell. Os Escopos podem ser: Globais, Locais, do Script ou Private. Neste post, vamos abordar apenas o escopo Global, pois teremos um post dedicado ao assunto Escopos.

Quando utilizamos Variáveis em Funções, o valor declarado estará disponível somente no contexto da Função, não podendo ser utilizado fora.

Exemplo:

Considere a seguinte Função:

Como podemos observar, declaramos um valor para a variável $funcaovar dentro da Função. Ao invocar a Função já declarada, o valor declarado na variável é retornado corretamente, contudo, ao chamar a variável declarada fora do contexto da Função, o valor retornado é nulo.

É possível deixar um valor declarado em uma Função disponível após a sua chamada para o resto da execução de um código. Para isto, precisamos alterar o escopo da Variável para Global.

O Escopo Global contempla todo o ambiente do Windows Powershell quando iniciado. É nele que ficam armazenadas todas as Variáveis, Funções ou Aliases nativos ou instalados quando Powershell é iniciado. Quando configuramos o Escopo de uma Variável para Global, estamos dizendo que ela pode ser utilizada em qualquer contexto durante a execução de códigos da atual instância do Powershell.

Para alterar o Escopo, basicamente precisamos utilizar a definição $Global: antes do nome da variável.

Sintaxe: $Global:<nomedavariavel> = <valor>

Exemplo:

Considere a seguinte Função:

Existe outra maneira de alterar o Escopo de uma Variável, que seria através do cmdlet Set-Variable.

Sintaxe: Set-Variable -Name <variavel>  -Value <valor> -Scope <escopo>

Exemplo:

Viu como é simples? Então quando você precisar usar um valor de retorno de uma Função em outra parte de seu código, basta armazenar este conteúdo em uma Variável Global e em seguida, declarar a Variável onde você precisar do dado armazenado.

Como limpar dados armazenados em Variável

Assim como é simples armazenar um dado para uma Variável, você também pode limpá-lo facilmente utilizando o cmdlet Clear-Variable seguido do nome da variável sem o $.

Sintaxe: Clear-Variable <nomedavariável>

Exemplo:

Como observamos no exemplo acima, declaramos um valor para a Variável $novavariavel, validamos o dado armazenado e em seguida o limpamos com o cmdlet Clear-Variable. Quando verificamos novamente o valor da Variável, constatamos que se tornou nulo, ou seja, não há mais nenhum valor atribuído a $novavariável.

Variáveis de Ambiente

No Powershell, também podemos utilizar as Variáveis de ambiente do Windows utilizando o provedor Environment. Como a Microsoft explica:

O provedor Environment do Windows PowerShell permite obter, adicionar, alterar, limpar e excluir variáveis de ambiente do Windows no Windows PowerShell. O provedor Environment é um namespace comum que contém apenas objetos que representam as variáveis de ambiente.

Ele é representado por $Env:<variavel> e pode ser utilizado para chamar valores comuns relacionados ao Computador, Sistema Operacional, Domínio ou Perfis de Usuário. A seguir, podemos verificar alguns exemplos de Variáveis de ambiente que podem ser usadas com o Powershell:

Sintaxe: $Env:<variável>

Exemplo:

Mais exemplos de Variáveis de ambiente:

ALLUSERSPROFILE Caminho do Diretório ProgramData
APPDATA Caminho do Diretório AppData/Roaming do Usuário
CommonProgramFiles Caminho do Diretório Common Files
CommonProgramFiles(x86) Caminho do Diretório Common Files (x86)
CommonProgramW6432 Caminho do Diretório Common Files
COMPUTERNAME Nome do Computador
ComSpec Caminho Completo do Executável cmd.exe
DriverData Caminho do Diretório de Armazenamento de Drivers
HOMEDRIVE Partição Raiz do Sistema Operacional
HOMEPATH Parte do Caminho do Diretório do Usuário
LOCALAPPDATA Caminho do Diretório AppData do Usuário
LOGONSERVER Servidor de Logon
NUMBER_OF_PROCESSORS Número de Cores do Processador
OneDrive Caminho do Diretório do OneDrive
OS Core do Sistema Operacional
Path Caminhos dos Diretórios Armazenados nas Variáveis de Sistema
PATHEXT Extensões Confiáveis Armazenadas nas Variáveis de Sistema
PROCESSOR_ARCHITECTURE Arquitetura do Processador
PROCESSOR_IDENTIFIER Modelo do Processador
PROCESSOR_LEVEL Nível do Processador
PROCESSOR_REVISION Revisão do Processador
ProgramData Caminho do Diretório ProgramData
ProgramFiles Caminho do Diretório Arquivos e Programas
ProgramFiles(x86) Caminho do Diretório Arquivos e Programas (x86)
ProgramW6432 Caminho do Diretório Arquivos e Programas
PSModulePath Caminho do Diretório de Módulos de Powershell do Usuário
PUBLIC Caminho do Perfil Público
SystemDrive Caminho do Diretório Raiz do Sistema Operacional
SystemRoot Caminho do Diretório do Windows
SysWow64 Caminho do Diretório SysWow64
TEMP Caminho do Diretório Temporário do Sistema Operacional
TMP Caminho do Diretório Temporário do Usuário
USERDOMAIN Nome do Domínio
USERDOMAIN_ROAMINGPROFILE Nome do Domínio para Caminhos de Perfil Móvel
USERNAME Nome do Perfil de Usuário
USERPROFILE Caminho do Perfil de Usuário
windir Caminho do Diretório do Windows

Conclusão

Usar Variáveis significa simplificar seu script, deixar ele mais otimizado e com menos linhas. Scripts precisam ser bem estruturados e de fácil entendimento para qualquer desenvolvedor poder manipulá-los. Um script com código extenso, termos longos e repetitivos só causarão dor de cabeça na hora que você precisar analisá-lo para corrigir um eventual bug. Com Variáveis, você pode facilitar o troubleshooting enquanto um valor está incorreto e é chamado diversas vezes no mesmo script. Imagina você ter que alterar manualmente diversos valores dentro de um script com mais de 2 mil linhas? É muito mais simples declará-los em Variáveis e depois simplesmente alterar o valor declarado. No contexto de Powershell, é quase que imprescindível o uso de Variáveis para uma boa desenvoltura do script. Novamente, use e abuse.

Para fixar bem os tópicos abordados aqui no blog, recomendo a todos praticar bastante os exemplos abordados. Fiquem à vontade em interagir nos comentários para quaisquer dúvidas. Não se esqueçam, a prática leva à perfeição.

É isso aí galera, por hoje é só. Até o próximo post!

Dúvidas, sugestões, críticas? Entre em contato aqui!

Gostou? Deixe seu comentário e não se esqueçam de curtir a página do Facebook na barra lateral!