Cmdlets (pronuncia-se "command-lets") são os comandos nativos do PowerShell, implementados como classes .NET. Diferente de comandos tradicionais de shell, os cmdlets seguem uma convenção rigorosa de nomenclatura que os torna previsíveis e fáceis de descobrir. Nesta aula, vamos entender a estrutura Verbo-Substantivo, por que ela é importante, como descobrir cmdlets e ver exemplos práticos.

Dominar essa convenção é essencial para navegar no ecossistema do PowerShell, pois ela permite que você adivinhe comandos que ainda não conhece e entenda rapidamente o que cada cmdlet faz.

Estrutura Verbo-Substantivo (Get-, Set-)

Cada cmdlet é nomeado no formato Verbo-Substantivo, onde o verbo indica a ação (como Get, Set, New, Remove) e o substantivo indica o alvo da ação (como Process, Service, Item). Por exemplo, Get-Process obtém informações sobre processos, Set-Service altera as propriedades de um serviço.

Os verbos são padronizados e aprovados pela Microsoft para garantir consistência. Exemplos comuns incluem: Get (recuperar), Set (definir), New (criar), Remove (remover), Start (iniciar), Stop (parar), Test (testar), entre outros. O substantivo geralmente é singular, mesmo que o cmdlet possa retornar múltiplos objetos.

# Exemplos de cmdlets com estrutura Verbo-Substantivo
Get-Process          # Obtém processos
Set-ExecutionPolicy  # Define a política de execução
New-Item             # Cria um novo item (arquivo, pasta, etc.)
Remove-Item         # Remove um item
Start-Service        # Inicia um serviço
Stop-Process        # Para um processo

Por que essa convenção

A convenção Verbo-Substantivo torna o PowerShell mais intuitivo e consistente. Ao saber o verbo, você já tem uma ideia da ação; ao saber o substantivo, sabe o alvo. Isso facilita a descoberta de comandos e a leitura de scripts.

Além disso, a padronização permite que ferramentas como o Get-Command filtrem cmdlets por verbo ou substantivo, ajudando na exploração. A Microsoft mantém uma lista de verbos aprovados para evitar duplicidade e ambiguidade, promovendo um ecossistema de módulos mais organizado.

# Filtrar cmdlets por verbo
Get-Command -Verb Get

# Filtrar cmdlets por substantivo
Get-Command -Noun Process

Descobrindo cmdlets

O PowerShell oferece vários cmdlets para descobrir outros cmdlets. O principal é Get-Command, que lista todos os cmdlets disponíveis. Você pode usar parâmetros como -Verb, -Noun, -Name (com curingas) para refinar a busca.

Outro cmdlet útil é Get-Help, que exibe a ajuda de um cmdlet, incluindo sintaxe, parâmetros e exemplos. Para obter exemplos, use Get-Help -Examples. E para descobrir os parâmetros de um cmdlet, use Get-Command -Syntax ou consulte a ajuda completa.

# Listar todos os cmdlets
Get-Command -CommandType Cmdlet

# Descobrir cmdlets relacionados a serviço
Get-Command -Noun *Service*

# Obter ajuda sobre um cmdlet
Get-Help Get-Process

# Ver exemplos de uso
Get-Help Get-Process -Examples

Exemplos

Vamos ver alguns exemplos práticos que ilustram o uso de cmdlets com a estrutura Verbo-Substantivo.

# Listar processos com mais de 100 MB de memória
Get-Process | Where-Object { $_.WorkingSet64 -gt 100MB }

# Criar uma nova pasta
New-Item -Path "C:\Temp\NovaPasta" -ItemType Directory

# Alterar a política de execução para permitir scripts locais
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

# Parar um serviço específico
Stop-Service -Name Spooler -Force

# Testar se uma porta está aberta (usando Test-NetConnection, que segue a convenção)
Test-NetConnection -ComputerName localhost -Port 80

Boas práticas

Ao criar seus próprios cmdlets (em módulos), siga a convenção: use verbos aprovados (consulte Get-Verb) e substantivos no singular. Evite verbos não padronizados para manter a consistência. Sempre forneça ajuda e exemplos para seus cmdlets.

Referências

Exercícios

  1. Use o cmdlet apropriado para listar todos os cmdlets que começam com o verbo "Get".
  2. ✓ Resposta: Get-Command -Verb Get -CommandType Cmdlet
  3. Qual cmdlet você usaria para obter ajuda detalhada sobre o cmdlet Set-Service? Escreva o comando.
  4. ✓ Resposta: Get-Help Set-Service -Detailed (ou apenas Get-Help Set-Service)
  5. Liste todos os cmdlets que têm o substantivo "Item" (dica: use curinga).
  6. ✓ Resposta: Get-Command -Noun *Item* -CommandType Cmdlet
  7. Escreva um comando que crie uma nova chave de registro chamada "MinhaChave" em HKCU:\Software\Teste.
  8. ✓ Resposta: New-Item -Path "HKCU:\Software\Teste\MinhaChave"
  9. Qual verbo aprovado você usaria para um cmdlet que reinicia um serviço? (Consulte Get-Verb se necessário).
  10. ✓ Resposta: O verbo aprovado é Restart, então Restart-Service.