Skip to content

Instantly share code, notes, and snippets.

@JoaoRoccella
Created February 13, 2025 19:32
Show Gist options
  • Select an option

  • Save JoaoRoccella/0688eea4d817c8de31bc6d43e7e2e911 to your computer and use it in GitHub Desktop.

Select an option

Save JoaoRoccella/0688eea4d817c8de31bc6d43e7e2e911 to your computer and use it in GitHub Desktop.
Comandos PowerShell

PowerShell (Terminal do Windows)

No ambiente do PowerShell, os cmdlets desempenham um papel essencial na automação e administração de sistemas, proporcionando uma estrutura consistente para executar tarefas específicas. Entre as funcionalidades mais úteis estão os comandos de manipulação e consulta de arquivos, que permitem organizar, acessar e filtrar informações com eficiência. Este material apresenta comandos básicos e avançados, com explicações detalhadas, para usuários que desejam explorar o potencial do PowerShell como uma poderosa ferramenta de produtividade.

O que são cmdlets?

Cmdlets (pronuncia-se command-lets) são comandos específicos do PowerShell, projetados para executar tarefas no sistema operacional ou em outras plataformas que o PowerShell pode gerenciar. Eles são pequenas funções construídas em .NET, projetadas para fornecer funcionalidades específicas e se integram perfeitamente ao ambiente de scripting do PowerShell.


Características dos Cmdlets

  1. Nomenclatura padrão (Verbo-Substantivo):

    • Os cmdlets seguem o padrão Verbo-Substantivo, o que facilita a identificação e o uso. Exemplos:
      • Get-Process (obter informações sobre processos).
      • New-Item (criar um novo arquivo, pasta ou outro item).
      • Remove-Item (excluir arquivos ou pastas).
  2. Estruturados e Consistentes:

    • Todos os cmdlets compartilham uma estrutura comum de parâmetros e comportamento, tornando-os previsíveis e fáceis de usar.
  3. Integrados ao .NET Framework:

    • Os cmdlets são baseados no .NET Framework ou no .NET Core (dependendo da versão do PowerShell). Isso permite acesso direto a objetos do sistema operacional e APIs.
  4. Trabalham com Objetos:

    • Diferentemente de outros interpretadores de comando (como o CMD no Windows ou o Bash no Linux), os cmdlets do PowerShell trabalham com objetos e não com texto puro. Isso significa que os dados podem ser manipulados diretamente como propriedades e métodos, o que torna os scripts mais poderosos e flexíveis.

Estrutura Básica de um Cmdlet

  1. Verbo: Ação que o cmdlet executa.

    • Exemplo: Get, Set, New, Remove.
  2. Substantivo: O objeto ou recurso no qual o cmdlet opera.

    • Exemplo: Process, Service, Item.
  3. Parâmetros: Opções adicionais que modificam o comportamento do cmdlet.

    • Exemplo: -Path, -Filter, -Recurse.

Exemplo de Cmdlet

Get-ChildItem -Path "C:\Windows" -Recurse
  • Verbo: Get (obter).
  • Substantivo: ChildItem (arquivos e pastas).
  • Parâmetros:
    • -Path "C:\Windows": Define o caminho da pesquisa.
    • -Recurse: Inclui subdiretórios na listagem.

Diferenças Entre Cmdlets e Outros Comandos (como CMD ou Bash)

Aspecto Cmdlets (PowerShell) Comandos do CMD ou Bash
Dados manipulados Objetos Texto puro
Consistência Padrão Verbo-Substantivo Não há padrão definido
Integração Baseado no .NET (acesso a APIs avançadas) Limitado ao SO
Composição Suporta pipelines (dados como objetos) Pipelines são texto/string

Cmdlets Comuns no PowerShell

Aqui estão alguns cmdlets amplamente utilizados:

Cmdlet Descrição
Get-Help Exibe informações sobre outros cmdlets.
Get-Command Lista todos os cmdlets disponíveis.
Get-Process Lista processos em execução no sistema.
Stop-Process Finaliza um processo específico.
Get-Service Lista os serviços do sistema.
Start-Service Inicia um serviço.
Stop-Service Para um serviço.
New-Item Cria um novo arquivo ou pasta.
Remove-Item Exclui um arquivo ou pasta.

Cmdlets e o Pipeline

Uma das características mais poderosas do PowerShell é a capacidade de usar cmdlets em pipelines. Os dados fluem de um cmdlet para outro como objetos.

Exemplo: Listar processos e ordenar pelo uso de CPU

Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
  1. Get-Process: Obtém todos os processos.
  2. Sort-Object CPU -Descending: Ordena os processos pela CPU em ordem decrescente.
  3. Select-Object -First 5: Exibe os 5 processos que mais consomem CPU.

Manipulação de arquivos

1. Criar Arquivo

  • New-Item: Cria arquivos ou diretórios.
# Cria um arquivo vazio chamado "arquivo.txt"
New-Item -Path "C:\PastaTeste\arquivo.txt" -ItemType File

# Cria um diretório chamado "NovaPasta"
New-Item -Path "C:\PastaTeste\NovaPasta" -ItemType Directory

2. Listar Arquivos

  • Get-ChildItem: Lista arquivos e diretórios.
# Lista todos os arquivos e pastas em "C:\PastaTeste"
Get-ChildItem -Path "C:\PastaTeste"

# Lista apenas arquivos com extensão .txt
Get-ChildItem -Path "C:\PastaTeste" -Filter *.txt

3. Renomear Arquivo

  • Rename-Item: Renomeia arquivos ou pastas.
# Renomeia "arquivo.txt" para "novo_arquivo.txt"
Rename-Item -Path "C:\PastaTeste\arquivo.txt" -NewName "novo_arquivo.txt"

4. Mover Arquivo

  • Move-Item: Move arquivos ou pastas para outro local.
# Move "novo_arquivo.txt" para a pasta "NovaPasta"
Move-Item -Path "C:\PastaTeste\novo_arquivo.txt" -Destination "C:\PastaTeste\NovaPasta"

5. Copiar Arquivo

  • Copy-Item: Copia arquivos ou pastas.
# Copia "novo_arquivo.txt" para "C:\Backup"
Copy-Item -Path "C:\PastaTeste\NovaPasta\novo_arquivo.txt" -Destination "C:\Backup"

6. Excluir Arquivo

  • Remove-Item: Remove arquivos ou pastas.
# Exclui o arquivo "novo_arquivo.txt"
Remove-Item -Path "C:\PastaTeste\NovaPasta\novo_arquivo.txt"

# Exclui a pasta "NovaPasta" e seu conteúdo
Remove-Item -Path "C:\PastaTeste\NovaPasta" -Recurse

7. Ver Conteúdo do Arquivo

  • Get-Content: Exibe o conteúdo de arquivos de texto.
# Lê o conteúdo do arquivo "arquivo.txt"
Get-Content -Path "C:\PastaTeste\arquivo.txt"

8. Editar Arquivo

  • Set-Content: Escreve conteúdo em um arquivo, sobrescrevendo o existente.
  • Add-Content: Adiciona conteúdo ao final do arquivo.
# Sobrescreve o conteúdo do arquivo com "Olá, mundo!"
Set-Content -Path "C:\PastaTeste\arquivo.txt" -Value "Olá, mundo!"

# Adiciona "Bem-vindo ao PowerShell" ao final do arquivo
Add-Content -Path "C:\PastaTeste\arquivo.txt" -Value "Bem-vindo ao PowerShell"

9. Ver Propriedades de Arquivos

  • Get-Item: Mostra as propriedades de um arquivo ou diretório.
# Exibe propriedades de "arquivo.txt"
Get-Item -Path "C:\PastaTeste\arquivo.txt" | Select-Object *

10. Pesquisar Arquivos

  • Select-String: Pesquisa conteúdo dentro de arquivos.
# Procura pela palavra "PowerShell" em arquivos .txt
Select-String -Path "C:\PastaTeste\*.txt" -Pattern "PowerShell"

Comandos com o verbo Get-

O PowerShell possui diversos comandos que utilizam o verbo Get- para consultar informações no sistema. Esses comandos são muito úteis para buscar dados sobre arquivos, serviços, processos, configuração do sistema, entre outros. Além disso, podemos usar os cmdlets Select-Object e Where-Object para filtrar e selecionar informações específicas.

1. Listar os Comandos de Consulta (Get-)

Alguns dos comandos mais comuns para consulta no PowerShell:

Comando Descrição
Get-Help Exibe ajuda sobre comandos ou tópicos.
Get-Command Lista todos os comandos disponíveis no PowerShell.
Get-ChildItem Lista arquivos e diretórios.
Get-Process Lista processos em execução no sistema.
Get-Service Lista serviços instalados no sistema.
Get-EventLog Consulta logs de eventos do Windows.
Get-Content Exibe o conteúdo de arquivos.
Get-Item Recupera informações sobre arquivos ou pastas.
Get-Date Exibe a data e hora atual.
Get-Host Exibe informações sobre o host do PowerShell.

2. Uso Básico do Get-

Exemplos de Consultas

  1. Processos em execução:

    Get-Process
  2. Serviços no sistema:

    Get-Service
  3. Arquivos em um diretório:

    Get-ChildItem -Path "C:\Windows"

3. Filtrando com Where-Object

O cmdlet Where-Object permite filtrar resultados com base em condições.

Exemplo 1: Filtrar processos que usam mais de 100 MB de memória

Get-Process | Where-Object { $_.WorkingSet -gt 100MB }
  • $_: Representa o objeto atual no pipeline.
  • WorkingSet: Propriedade que mostra o uso de memória.

Exemplo 2: Listar serviços que estão parados

Get-Service | Where-Object { $_.Status -eq "Stopped" }
  • Status: Propriedade que indica o estado do serviço.
  • -eq: Operador de comparação (igual a).

4. Selecionando Propriedades com Select-Object

O cmdlet Select-Object permite escolher quais propriedades exibir nos resultados.

Exemplo 1: Selecionar Nome e Uso de Memória de Processos

Get-Process | Select-Object Name, WorkingSet

Exemplo 2: Mostrar apenas os 5 primeiros serviços

Get-Service | Select-Object -First 5

Exemplo 3: Mostrar os 3 últimos arquivos em uma pasta

Get-ChildItem -Path "C:\Windows" | Select-Object -Last 3

5. Combinando Where-Object e Select-Object

Você pode combinar os dois cmdlets para filtrar e exibir propriedades específicas.

Exemplo: Processos com mais de 200 MB de memória, exibindo Nome e Uso de Memória

Get-Process | Where-Object { $_.WorkingSet -gt 200MB } | Select-Object Name, WorkingSet

Exemplo: Serviços iniciados, exibindo Nome e Status

Get-Service | Where-Object { $_.Status -eq "Running" } | Select-Object DisplayName, Status

6. Ordenando Resultados

Para ordenar os resultados, você pode usar Sort-Object.

Exemplo: Ordenar processos por uso de memória (descendente)

Get-Process | Sort-Object WorkingSet -Descending | Select-Object Name, WorkingSet -First 10

7. Exibindo Dados em Tabela ou Lista

  • Format-Table (ou ft): Exibe os resultados em formato de tabela.
  • Format-List (ou fl): Exibe as propriedades de forma detalhada.

Exemplo: Processos como Tabela

Get-Process | Format-Table Name, CPU, WorkingSet

Exemplo: Propriedades detalhadas de um serviço

Get-Service | Where-Object { $_.DisplayName -like "*Windows*" } | Format-List *
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment