Articles

compreender funções em PowerShell

em vez de copiar e colar o mesmo código vezes sem conta, criar uma função PowerShell.

Quando Começa a escrever scripts PowerShell você não está necessariamente preocupado com coisas como modularidade, reutilização e “melhores práticas.”Estás a molhar os pés. No entanto, com o passar do Tempo, em breve vais perceber que começas a repetir-te em código.

Você vai notar que a necessidade de fazer a mesma coisa repetidamente continua ficando maior. Você pode copiar e colar esse mesmo código, mas não é sustentável. Em vez disso, por que não criar pequenos “blocos de construção” em código para que eles possam ser reutilizados? Está na hora de começar a criar funções PowerShell.

uma função em PowerShell é um agrupamento de código que tem uma entrada e saída opcionais. É uma forma de coletar um monte de código para executar uma ou muitas vezes diferentes, apenas apontando para ele em vez de duplicar esse código repetidamente.

funções básicas

Existem dois tipos de funções em PowerShell. Temos uma função “básica” e uma função avançada. Funções “básicas” são a forma mais simples de uma função que pode ser criada. Eles não têm nenhuma das capacidades embutidas que funções avançadas fazem. Ele é criado ou declarado usando a instrução da função seguida por um conjunto de chavetas.

função Do-Something {}

O acima é tecnicamente uma função que pode ser chamada invocando Do-Something, mas como você vai achar que não faz muito. Isto é porque não incluímos nenhum código lá dentro para executar. Vamos adicionar um código simples lá dentro para garantir que ele faz alguma coisa. Para demonstrar, vou usar o comando Write-Host que escreve texto para o console PowerShell.

function Do-Something {
Write-Host ‘ I did something!’
}

PS > do-Something
I did something!

Agora você pode ver acima que quando invocado; ele executa o código dentro da função. E se gostássemos de passar algo para o código dentro da função quando estiver a funcionar? Podemos criar um ou mais parâmetros dentro de um bloco de parâmetros.

função do-Something {
param ($String)
Write-Host “I did something — $String!”}

PS > do-Something-String ‘thing’
I did something — thing!

Notice that I specified the String parameter by adding a dash followed by the parameter name followed by the value right after I called Do-Something. Este é o básico de passar parâmetros para funções.

funções avançadas

funções básicas funcionam, mas na maioria das vezes você vai encontrar-se a criar uma função avançada. Funções avançadas são funções que incluem toda a funcionalidade como funções básicas, mas também vêm com algumas características embutidas que as funções básicas não. Por exemplo, PowerShell tem um conceito de fluxos chamado erro, aviso, verbo, etc. Estes fluxos são críticos na exibição correta de saída para os usuários. Funções básicas não entendem inerentemente estes fluxos.digamos que queremos mostrar uma mensagem de erro se algo acontecer dentro da função. No entanto, também queremos a capacidade de esconder esta mensagem de erro por alguma razão, apenas em certas alturas. Com uma função básica, seria desleixado fazer isso. No entanto, com uma função avançada, essa funcionalidade é incorporada. Funções avançadas, por padrão, já têm parâmetros, mesmo que você não os inclua como Verbose, ErrorAction, WarningVariable e assim por diante. Estes podem ser aproveitados de maneiras diferentes. No nosso exemplo de erro, digamos que modifiquei a nossa função para ser” avançada ” usando a palavra-chave.

função do-Something {

param ($String)

Write-Error-Message ‘ Danger, Will Robinson!’
}

PS > do-Something
Do-Something: Danger, Will Robinson!
At line: 1 char: 1
+ do-Something
+ ~~~~~~~~~~~~
+ CategoryInfo: Not Specified: (:),
Writeerrorrexception
+ FullyQualifiedErrorId:
Microsoft.PowerShell.Comando.WriteErrorException, Do-Something

Quando isto for executado, você verá imediatamente o texto vermelho que indica que ele veio do fluxo de erro. Vamos agora silenciar este erro.

do-Something-ErrorAction SilentlyContinue

O parâmetro ErrorAction é apenas um parâmetro Integrado em cada função avançada. Há muito mais nas funções PowerShell que não tivemos tempo de cobrir. Para uma análise completa de tudo o que as funções avançadas podem fazer por si, consulte o tópico de Ajuda about_ advanced_functions.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *