Olá pessoal, tudo bem? Espero que sim!

Continuando o tema Funções (Function) do Powershell, hoje vamos falar de um “atributo” que não é exatamente um atributo, mas sim uma técnica muito legal que pode ser utilizada tanto em Funções como em scripts do dia-a-dia.  Estou falando da técnica de Splatting.

O que é Splatting?

Splatting é uma técnica de script onde você cria um dicionário ou lista para referenciar parâmetros em uma variável para posteriormente repassá-los a comandos. Você representa um dicionário de splatting utilizando uma variável e um ou mais parâmetros declarado entre “@{}” onde o parâmetro deverá representar um dos disponíveis do comando a ser executado junto com o valor correspondente. Para invocar este dicionário após a declaração, basta usar @variável.

Sintaxe para declaração: $variável = @{Parametro = <valor>}

Sintaxe para execução: <comando> @variável

Exemplo:

Considere as seguintes variáveis com splatting:

Após declará-las, toda a vez que eu precisar usar o parâmetro Path referenciando o caminho do arquivo “C:\Users\RobotChicken\Desktop\alias.csv”, precisarei apenas chamar o dicionário @ArquivoAntigo, que o parâmetro do comando já estará pronto para uso:

Eu também posso combinar o dicionário declarado na variável $ArquivoAntigo com o parâmetro declarado na variável $NovoArquivo para renomear o arquivo de referência:

No exemplo acima, passamos no dicionário @ArquivoAntigo o parâmetro Path, que é compatível com o comando Rename-Item. Combinado com o parâmetro NewName que também é compatível com o cmdlet, a operação foi executada com sucesso. Basicamente seria como se executássemos o seguinte comando:

Obs1: Quando combinar diversos dicionários criados com splatting em comandos, certifique-se que o comando dispõe de todos os parâmetros declarados nas variáveis utilizadas com splatting.

Obs2: Para invocar dicionários implantados dentro de uma Função, primeiramente esta deve ser declarada ou você deve torná-la nativa em seu shell realizando a sua instalação, conforme explicado no post #6.

Utilizando o Splatting para definir atributos de Parâmetro

Podemos utilizar a técnica de splatting para capturar e utilizar parâmetros de comandos em Funções personalizadas. Isto pode ser feito, utilizando o termo @Args para representar todos os parâmetros disponíveis para o comando em questão.

Sintaxe: Function <nome da função> {<comando> @Args}

Exemplo:

Como podemos observar no exemplo acima, quando declaramos o termo @Args para o comando Get-Process na Função Verificar-Processos, estamos basicamente repassando para a Função todos os parâmetros do comando Get-Process. A partir daqui, a nossa Função é capaz de realizar todas as operações do comando especificado.

Podemos combinar a técnica de splatting com parâmetros de alternância, que aprendemos a utilizar no último post.

Considere o exemplo:

Nesta Função combinei dois parâmetros de alternância, $criar e $remover, para referenciar partes de minha Função, e utilizando o operador lógico If, caso eu utilize o parâmetro -criar, poderei utilizar também todos os parâmetros disponíveis do comando New-Item para criação de arquivos. Da mesma forma, se utilizar o parâmetro -remover, poderei utilizar os parâmetros disponíveis do comando Remove-Item.

Exemplo:

Conclusão

Utilizando a técnica de splatting podemos maximizar as possibilidades de utilização de uma Função personalizada. Podemos pegar os principais comandos que costumamos utilizar e criar uma Função única onde poderemos realizar através de parâmetros qualquer tipo de operação. É uma técnica que pode ser utilizada para diversas finalidades com o objetivo de otimizar e simplificar cada vez mais suas linhas de comando, evitando que você crie scripts muito extensos e com blocos de comandos repetitivos. É para usar e abusar, risos.

Ok. Acredito que já está na hora de falarmos sobre Variáveis, pois, cada vez mais estamos utilizando-as nos exemplos aqui do blog, então nada mais justo do que abordarmos o que são variáveis, por que utilizá-las, como utilizá-las e suas principais aplicabilidades, então… 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!