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:
1 2 3 4 5 6 7 8 9 |
PS C:\Users\RobotChicken> $primeiravariavel = "Hello World" PS C:\Users\RobotChicken> $primeiravariavel Hello World PS C:\Users\RobotChicken> Set-Variable -Name segundavariavel -Value "Hello World Again" PS C:\Users\RobotChicken> $segundavariavel Hello World Again |
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:
1 2 3 4 5 6 7 8 9 |
PS C:\Users\RobotChicken> $primeiravariavel = "Olá Mundo" PS C:\Users\RobotChicken> $primeiravariavel Olá Mundo PS C:\Users\RobotChicken> Set-Variable -Name primeiravariavel -Value "Olá Mundo De Novo" PS C:\Users\RobotChicken> $primeiravariavel Olá Mundo De Novo |
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:
1 2 |
Function Consulta-Variavel{$funcaovar = "Valor declarado na função" $funcaovar} |
1 2 3 4 5 6 |
PS C:\Users\RobotChicken\Desktop> Consulta-Variavel Valor declarado na função PS C:\Users\RobotChicken\Desktop> $funcaovar PS C:\Users\RobotChicken\Desktop> |
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:
1 2 |
Function Consulta-Variavel{$Global:funcaovar = "Valor declarado na função" $funcaovar} |
1 2 3 4 5 |
PS C:\Users\RobotChicken\Desktop> Consulta-Variavel Valor declarado na função PS C:\Users\RobotChicken\Desktop> $funcaovar Valor declarado na 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:
1 2 |
Function Consulta-Variavel{Set-Variable -Name funcaovar -Scope Global -Value "Valor declarado na função" $funcaovar} |
1 2 3 4 5 |
PS C:\Users\RobotChicken> Consulta-Variavel Valor declarado na função PS C:\Users\RobotChicken> $funcaovar Valor declarado na função |
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:
1 2 3 4 5 6 7 8 9 10 |
PS C:\Users\RobotChicken> $novavariavel = "Dado Armazenado" PS C:\Users\RobotChicken> $novavariavel Dado Armazenado PS C:\Users\RobotChicken> Clear-Variable novavariavel PS C:\Users\RobotChicken> $novavariavel PS C:\Users\RobotChicken> |
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:
1 2 |
PS C:\Users\RobotChicken> $Env:USERPROFILE C:\Users\RobotChicken |
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!
[…] vimos no último post, As variáveis são muito úteis para armazenar valores que se repetem ao decorrer do script, mas […]