Gramática no Powershell - Aprendendo a se comunicar com o Powershell



Cenário: Será uma tarefa comum dos Administradores utilizar o Powershell. Seja uma exigência de configuração ou automatizando processos, é necessário conhecer como utilizar as Cmdlets e suas peculiaridades. Entender como o Powershell se comunica será o diferencial para extrair o verdadeiro potencial criativo do Time de Suporte.

Requisitos: Aptidão para tradução literal de palavras em Inglês.

O Powershell é um Prompt de linha de comando. Sim! Mas também é uma linguagem de script formada por Cmdlets adaptadas para tarefas de administração do sistema.
  •  Como se trata de linguagem de script o Powershell é constituído de operadores, pipelines, objetos, atributos, variáveis, vetores e ainda todas as regras do seu código fonte para criação de Scripts.

A Cmdlet, que se pronuncia "Command let", implementa funções específicas (executa um comando, uma ação). Uma Cmdlet segue uma regra de verbo e substantivo para se formar uma frase que se torna uma ação, uma função a ser executada. Como por exemplo Restart-Computer (Reiniciar Computador).

  • A disponibilidade dos verbos depende do substantivo de cada Cmdlet.
  • A disponibilidade dos substantivos depende do verbo da Cmdlet.

Entendendo a Sintaxe de Cmdlets no Powershell - Verbo e Substantivo

Para uma ideia clara do significado de verbo, observe os verbos mais comuns como Adicionar, Conectar, Converter, Limpar, Habilitar, Obter,... na imagem abaixo.


Os Verbos das Cmdlets são:
  • Add, Backup, Block, Checkpoint, Clear, Close, Compare, Complete, Configuration, Confirm, Connect, Convert, ConvertFrom, ConvertTo, Copy, Debug, Disable, Disconnect, Dismount, Enable, Enter, Exit, Expand, Export, Find, ForEach, Format, Get, Grant, Group, Help, Hide, Import, Initialize, Install, Invoke, Join, Limit, Lock, Measure, Merge, Mkdir, Mount, Move, New, Open, Otimize, Oss, Out, Pause, Pop, PsEdit, Publish, Push, Read, Receive, Register, Remove, Rename, Repair, Reset, Resize, Resolve, Restart, Restore, Resume, Revoke, Save, Select, Send, Set, Show, Sort, Split, Start, Stop, Suspend, Switch, Sync, Tee, Test, Trace, Unblock, Undo, Unistall, Unlock, Unresgister, Update, Use, Wait, Where, Write.
Para exibir os Verbos disponíveis para um Substantivo específico:
  • Get-Command -Noun NomedoVerbo
Para exibir os Substantivos disponíveis para um verbo específico:
  • Get-Command -Verb NomedoVerbo

Os Cmdlets disponíveis dependem dos módulos carregados.

Os parâmetros do Powershell começam com traço (-), para definir os parâmetros os seus valores e a sintaxe na Cmdlet execute Help NomedaCmdlet.


Exemplos das Cmdlets de serviço, log de eventos e processo:
  • Get-Service Exibir as propriedades de um serviço.
  • New-Service Criar um novo serviço.
  • Restart-Service Reiniciar um serviço existente.
  • Resume-Service Retoma um serviço suspenso.
  • Set-Service Configura as proprieades de um serviço.
  • Start-Service Inicia um serviço interrompido.
  • Stop-Service Para de executar um serviço.
  • Suspend-Service Suspende um serviço.
  • Get-Eventlog Exibe eventos no log de eventos especificado.
  • Clear-Eventlog Exclui todas as entradas do log de eventos especificado.
  • Limit-Eventlog Define os limites de idade e tamanho do log de eventos.
  • New-Eventlog Cria um novo log de eventos e uma nova fonte de eventos.
  • Remove-Eventlog Remove um log de eventos personalizado.
  • Show-Eventlog Mostra os logs de eventos de um computador.
  • Write-Eventlog Permite gravar eventos em um log de eventos.

  • Get-Process Fornece informações sobre um processo.
  • Start-Process Inicia um processo.
  • Stop-Process Para um processo.
  • Wait-Process Aguarda a interrupção antes de aceitar uma entrada.
  • Debug-Process Conecta um depurador a um ou mais processos.
Módulos são um conjunto de Cmdlets de uma determinada função. Você pode descobri os módulos disponíveis no seu sistema executando Get-Module -ListAvailable e para importar um módulo para execução execute Import-Module "NomedoModulo"


Exemplos de Cmdlets encontradas nos Módulos Gerenciador do Servidor, Hyper-V e Dism.
  • Get-WindowsFeature Exibe a lista de Funções e Recursos instalados.
  • Add-WindowsFeature Instala uma Função ou Recurso.
  • Uninstall-WindowsFeature Desinstala uma Função ou Recurso.
  • New-VM Cria uma nova máquina virtual.
  • Resize-VHD Redimensiona o espaço em disco do VHD.
  • Set-VMMemory Configura a memória da maquina virtual.

  • New-Windowsimage Cria uma nova Imagem.
  • Set-WinodwsProductKey Define um Serial a Imagem.
  • Update-WIMBootEntry Atualiza a opção de boot da imagem.
 E onde se encaixa o Script no Powershell? Simples! O Script é apenas uma sequencia lógica de Cmdlets com parâmetros e regras de linguagens de script ordenadas na forma de texto. É salvo no formato .ps1, onde basta sua execução (.\Script.ps1) para aplicar todos os comandos.

A criação de Script no Powershell merece destaque, mas tudo que se utiliza nesta linguagem de script permite diversos usos para sua Cmdlet e desperta a curiosidade e criatividade.

Operadores Comparativos 

O Powershell compara para você dois números ou strings:
  • -eq Igual a, utilizado para comparar números e textos.
  • -lt Menor que, Utilizado para comparar números.
  • -gt Maior que, utilizado para comparar números.
  • -ge Maior ou igual a, utilizado para comparar números.
  • -le Menor que, utilizado para comparar números.
  • -ne Não igual a, utilizado para comparar números e textos.
  • -contains Contém, utilizado para comparar vetores.
  • -like Igual, utilizado para comparar textos ou números.
  • -notlike  Não igual a.
  • -is É, utilizado para comparar tipos de objetos.
  • -isnot Não é, utilizado para comparar tipos de objetos

Operadores Condicionais

O Powershell verifica para você se uma condição é verdadeira ou falsa:
  • if Verifica se a condição for verdadeira.
  • else Utilizado após o if, verifica se a condição não foi verdadeira.
  • elseif Utilizado e a condição anterior não for verdadeira e uma nova condição for.
  • while Utilizado para repetir um bloco enquanto uma condição for verdadeira.
  • for Utilizado para repetir um bloco um predeterminado numero de vezes.
  • foreach Utilizado para repetir um bloco uma vez para cada item em uma lista.
  • where Utilizado para filtrar itens em uma lista.
  • switch Utilizado para executar multiplas verificações substituindo uma cadeia de ifs.

Redirecionando Saída dos Cmdlets

Quando executamos um Cmdlet ele retorna um objeto ou um vetor de objetos, com a pipeline ( | ) podemos redirecionar a saída da Cmdlet para outro comando e assim sucessivamente.

Exemplos de Pipeline ( | )(ASCII 124):
  • Command-1 | Command-2 | Command-3
  • Get-Process notepad | Stop-Process
  • Get-Service wmi | Start-Service
  • Get-Process | Sort-Object -property handles
  • Saiba tudo sobre Pipelines no about_Pipelines

Otimizando o Comando Help com verbo e Parâmetros.

O substantivo Help tem um verbo bem interessante, Get-Help
  • Get-Help NomedaCmdlet
O Get-Help também tem parâmetros especiais.
  • Get-Help Get-Process -Examples
  • Get-Help Get-Process -Full
  • Get-Help Get-Process -Parameter
  • Get-Help Get-Process -Functionality
  • Get-Help Get-Process -Online
Por padrão o conteúdo de Ajuda (Help) do Powershell não vai estar atualizado. Para utilizar o Help com mais opções e muito mais informações úteis atualize seu banco de dados. É necessário atualizar os módulos separadamente.

Exibindo lista de módulos disponíveis para atualização:
  • Get-Module -ListAvaliable | Updade-Help

Atualizando um módulo do Powershell:
  • Update-Help NomedoModulo

Conclusão: Falar a linguagem do Powershell permite executar tarefas administrativas simples e também complexas configurações no ambiente de grande porte com a mesma versatilidade.

Esse artigo foi submetido por

Alexandre de Matos
MCSE - MCSA - MCTS
alexandremn@live.estacio.br

Um comentário:

< >