Contents

O que é o Windows PowerShell Scripting?

⭐ Visão geral de scripts do PowerShell

⭐ Cmdlets em detalhes

⭐ Parâmetros do PowerShell explicados

⭐ Criando um pipeline

⭐ Salvando Salvar o Pipeline como um Script PS1

⭐ O PowerShell também está disponível no Linux e no macOS

Principais lições

O PowerShell é uma linguagem de script versátil e poderosa projetada para facilitar a automação de vários processos de computação, fornecendo aos utilizadores um meio eficiente de simplificar os seus fluxos de trabalho, permitindo-lhes executar comandos e realizar operações num ambiente unificado.

Os comandos do Powershell, conhecidos como cmdlets, possuem uma função singular cada. O comando “Get-Command” permite-lhe consultar o conjunto de cmdlets acessíveis.

O PowerShell pode ser utilizado numa vasta gama de sistemas operativos, incluindo Windows, macOS e Linux.

O PowerShell é uma linguagem de script versátil concebida especificamente para automatizar várias tarefas informáticas com facilidade, eficiência e fiabilidade em sistemas baseados no Windows. Aprenda a tirar partido das suas capacidades criando scripts personalizados adaptados aos seus requisitos específicos.

Visão geral dos scripts do PowerShell

Para começar a criar scripts básicos do PowerShell em um sistema operacional Windows, é imperativo entender três conceitos fundamentais:

⭐ Cmdlets : comandos de função única.

Os parâmetros servem para delinear os detalhes específicos relativos à execução de Cmdlets ou comandos, incluindo o seu objetivo, tempo, localização e metodologia. Estes parâmetros fornecem orientações essenciais para a execução de tarefas de uma forma controlada e precisa.

O pipeline é um recurso poderoso do PowerShell que permite passar a saída de um comando ou função como entrada para outro, criando uma estrutura semelhante a uma cadeia. Ao utilizar esta funcionalidade, pode criar facilmente tarefas de script complexas ligando vários comandos entre si, permitindo uma automatização eficiente e fluxos de trabalho simplificados.

Ao utilizar os três componentes, é possível criar scripts de fácil utilização que simplificam vários processos através da automatização.

Neste exemplo, ilustramos a integração de vários cmdlets do PowerShell para atingir um objetivo específico. A sequência desses comandos é chamada de “pipeline”, em que cada comando individual processa dados e os passa para o próximo até que o resultado desejado seja alcançado.Esta abordagem permite que os utilizadores executem operações complexas com maior eficiência, simplificando o seu fluxo de trabalho e reduzindo a intervenção manual.

/pt/images/get-potato.jpg

Para executar essa sequência de operações usando o PowerShell, é possível empregar um comando semelhante ao seguinte:

 Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
  | Place-Object Bowl 

Cmdlets em detalhe

O PowerShell está equipado com um conjunto de comandos incorporados que permitem aos utilizadores manipular objectos do sistema e efetuar várias operações. Esses comandos principais do PowerShell são chamados de Cmdlets.

O PowerShell utiliza um tipo específico de comando conhecido como cmdlets, que são compactos e executam uma função singular com a ajuda da extensão .dll. Essas unidades de programação em miniatura possuem a caraterística vantajosa de serem compiladas de forma concisa, resultando em uma execução rápida quando comparadas a funções mais abrangentes.

A utilização do PowerShell oferece uma vasta gama de comandos, abrangendo inúmeras funcionalidades. Não é necessário tornar-se proficiente em todos os comandos; em vez disso, recomenda-se começar com a aquisição de conhecimentos fundamentais e expandi-los progressivamente ao longo da experiência de scripting. Para examinar os comandos da Interface de Linha de Comandos (CLI) atualmente instalados no seu sistema, execute a seguinte instrução:

 Get-Command 

Ao examinar os resultados, é possível discernir que aderem a um padrão de construção verbo-substantivo. Esta disposição facilita a compreensão da função de um determinado Cmdlet.

O Powershell fornece vários cmdlets incorporados para a execução de diferentes tarefas. O comando Get-Command retorna uma matriz de todos os comandos disponíveis no Powershell. Da mesma forma, o comando Get-Process recupera informações sobre os processos em execução no seu sistema. Além disso, o cmdlet Copy-Item permite aos utilizadores transferir um ou vários ficheiros de uma localização para outra pasta de destino especificada.

As ferramentas de linha de comandos são acompanhadas por uma documentação abrangente que inclui exemplos ilustrativos, directrizes de utilização detalhadas e explicações aprofundadas relativas às suas capacidades.

Para obter mais informações sobre um determinado Cmdlet e a sua utilização, a execução do seguinte comando fornecer-lhe-á detalhes abrangentes:

 Get-Help <name-of-cmdlet> 

Parâmetros do PowerShell explicados

Os comandos do PowerShell podem ser executados com vários graus de especificidade através do uso de parâmetros. Esses parâmetros permitem maior controle sobre a execução de Cmdlets e funções, especificando fatores como destino, tempo, local e metodologia.

Uma ilustração disto é a obtenção de uma lista de processos atualmente activos num sistema operacional, utilizando o comando “Get-Process”.

/pt/images/get-process-cmdlet.jpg

Para obter um processo específico utilizando parâmetros de linha de comando, é possível empregar o atributo “Name” em conjunto com o cmdlet “Get-Process”. Como ilustração, para obter todas as instâncias da aplicação Slack, o utilizador introduziria o seguinte comando:mathematicaGet-Process -Name " Slack

 Get-Process -Name Slack 

Ao executar o comando, ser-lhe-á apresentada uma lista de processos com a etiqueta “slack”.

/pt/images/get-process-with-parameter.jpg

Certas variáveis possuem uma caraterística conhecida como “posicionalidade”, em que a sua designação como obrigatória ou opcional é determinada pelo contexto e não por um rótulo explícito. Por exemplo, ao invocar o comando Get-Process -Name Slack , a omissão do título do parâmetro resulta na sua inclusão como posicional, permitindo assim que ele seja entendido dentro do contexto dado sem a necessidade de um rótulo específico. Da mesma forma, ao executar o comando Get-Process Slack , a falta de especificação do parâmetro também o torna posicional, permitindo que seja compreendido à luz das circunstâncias circundantes sem a necessidade de um identificador formalizado.

Cada Commandlet tem o seu próprio conjunto de parâmetros de entrada aceitáveis, que podem ser visualizados utilizando o comando Get-Help e navegando para a secção Syntax desse Commandlet específico.

 Get-Help Get-Process 

Ser-lhe-á apresentada uma série de métodos disponíveis para executar o Command especificado, incluindo vários parâmetros e opções.

/pt/images/cmdlet-syntax-parameters.jpg

Neste caso, o cmdlet Get-Process é capaz de aceitar uma variedade de parâmetros de entrada, incluindo, entre outros, Name, Id, ComputerName, Module e FileVersionInfo. Estes parâmetros representam os vários atributos que podem ser utilizados em conjunto com o cmdlet Get-Process para obter informações sobre processos em execução num sistema informático.

Símbolo

|

Nome

|

Significado

-|-|-
|

Em branco

|

O parâmetro não aceita entrada

-

|

Hífen

|

Indica o nome do parâmetro

<>

|

Parêntesis angulares

|

Espaço reservado para texto

[]

|

Parêntesis

|

Um parâmetro que pode conter vários valores, Um parâmetro capaz de acomodar vários valores, muitas vezes referido como variável ou campo, representa um elemento que pode ser alterado durante a execução de um programa e pode ter um impacto no seu resultado ou comportamento.

{}

|

Parênteses

|

O parâmetro aceita um conjunto de valores

Alguns parâmetros especificam os tipos de entrada esperados, incluindo cadeias de caracteres, números inteiros, booleanos e datas. Para ilustrar, considere o seguinte trecho de código:

 Get-Process [[-Name] <string[]>] 

O parâmetro Name é capaz de acomodar vários valores de cadeia de caracteres, enquanto que, em contraste, a restrição mencionada acima o restringe a aceitar apenas um único valor.

 Get-Process -Id <int[]> 

O parâmetro “Id” foi concebido para aceitar um ou mais valores inteiros, que podem ser utilizados para vários fins em aplicações de programação.

Para refinar ainda mais a pesquisa de processos e obter um conjunto de resultados mais preciso, é possível utilizar o parâmetro “ID” no comando do PowerShell “Get-Process”. Esse parâmetro específico requer a entrada de um valor inteiro, conforme especificado por sua sintaxe. Ao incorporar este parâmetro no comando, os utilizadores podem identificar um processo mais exato entre a lista de opções disponíveis.

 Get-Process -Id 3016 

Posteriormente, observará uma única instância dentro da enumeração:

/pt/images/using-id-parameter.jpg

Criando um pipeline

O PowerShell processa informações como entidades, que são organizadas por meio de uma série de comandos ou funções interconectados por meio de um símbolo de pipe (|). A seleção de commandlets apropriados e sua organização de forma coerente, utilizando o pipeline, desempenha um papel fundamental na elaboração de um script eficiente.

Aqui está um exemplo de como pode criar um script simples que ordena e mostra os 5 maiores ficheiros de um dado diretório com base no seu tamanho, usando Python:pythonimport osimport shutildef get_largest_files(directory):# Obtém a lista de todos os ficheiros no directóriofile_list = os.listdir(directory)# Ordena a lista pelo tamanho do ficheiro (em bytes)sorted_by_size = sorted(file_list, key=os.path.getsize, reverse=True)# Devolver apenas os primeiros n elementos da lista ordenadareturn sorted_by_size[:5]# Exemplo de utilização:diretório = ‘/path/to/your/folder/’top_

/pt/images/sort-largefiles-script.jpg

É possível utilizar uma configuração de pipeline no PowerShell que apresenta uma estrutura específica para realizar esta tarefa. O referido pipeline é constituído por vários componentes que funcionam em conjunto para alcançar o resultado pretendido.

 Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
 | Select-Object -First 5 | Format-Table Name, Length -AutoSize 

Salvando o pipeline como um script PS1

Para garantir a eficiência e a facilidade de acesso, talvez você queira conservar seu pipeline operacional convertendo-o em um arquivo PowerShell Script (.ps1) para utilização futura. Isso eliminará a necessidade de entrada manual repetitiva sempre que o pipeline for usado.

Um método simples para gerar um arquivo PowerShell Script (PS1) envolve colar o script desejado diretamente em um editor de texto, como o Bloco de Notas, e salvá-lo usando a extensão de arquivo “.ps1”.

/pt/images/creating-script-with-notepad.jpg

Para utilizar um script PS1 no PowerShell, execute o comando ./ScriptName.ps1 seguido de dois pontos.

/pt/images/using-ps1-script.jpg

Para resolver quaisquer problemas de permissões que possam surgir durante a execução do script, é recomendável executar o PowerShell com privilégios administrativos. Isso pode ser feito iniciando uma sessão elevada do PowerShell e, em seguida, executando o script nesse contexto.

Parabéns, agora você é capaz de criar scripts PS1 do PowerShell.

## O PowerShell também está disponível no Linux e no macOS

O PowerShell surgiu como uma linguagem de script para iniciantes muito procurada devido à sua interface amigável e aos seus amplos recursos. Anteriormente, era exclusiva do ecossistema Windows; no entanto, as actualizações recentes permitiram a disponibilidade do PowerShell em várias plataformas, como o macOS e várias distribuições Linux. Esta expansão aumenta ainda mais a versatilidade do PowerShell, permitindo que os utilizadores façam uma transição perfeita das suas competências entre diferentes sistemas operativos.