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.
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.
-
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).
- Os cmdlets seguem o padrão
-
Estruturados e Consistentes:
- Todos os cmdlets compartilham uma estrutura comum de parâmetros e comportamento, tornando-os previsíveis e fáceis de usar.
-
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.
-
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.
-
Verbo: Ação que o cmdlet executa.
- Exemplo:
Get,Set,New,Remove.
- Exemplo:
-
Substantivo: O objeto ou recurso no qual o cmdlet opera.
- Exemplo:
Process,Service,Item.
- Exemplo:
-
Parâmetros: Opções adicionais que modificam o comportamento do cmdlet.
- Exemplo:
-Path,-Filter,-Recurse.
- Exemplo:
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.
| 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 |
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. |
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.
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5Get-Process: Obtém todos os processos.Sort-Object CPU -Descending: Ordena os processos pela CPU em ordem decrescente.Select-Object -First 5: Exibe os 5 processos que mais consomem CPU.
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 DirectoryGet-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 *.txtRename-Item: Renomeia arquivos ou pastas.
# Renomeia "arquivo.txt" para "novo_arquivo.txt"
Rename-Item -Path "C:\PastaTeste\arquivo.txt" -NewName "novo_arquivo.txt"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"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"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" -RecurseGet-Content: Exibe o conteúdo de arquivos de texto.
# Lê o conteúdo do arquivo "arquivo.txt"
Get-Content -Path "C:\PastaTeste\arquivo.txt"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"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 *Select-String: Pesquisa conteúdo dentro de arquivos.
# Procura pela palavra "PowerShell" em arquivos .txt
Select-String -Path "C:\PastaTeste\*.txt" -Pattern "PowerShell"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.
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. |
-
Processos em execução:
Get-Process -
Serviços no sistema:
Get-Service -
Arquivos em um diretório:
Get-ChildItem -Path "C:\Windows"
O cmdlet Where-Object permite filtrar resultados com base em condições.
Get-Process | Where-Object { $_.WorkingSet -gt 100MB }$_: Representa o objeto atual no pipeline.WorkingSet: Propriedade que mostra o uso de memória.
Get-Service | Where-Object { $_.Status -eq "Stopped" }Status: Propriedade que indica o estado do serviço.-eq: Operador de comparação (igual a).
O cmdlet Select-Object permite escolher quais propriedades exibir nos resultados.
Get-Process | Select-Object Name, WorkingSetGet-Service | Select-Object -First 5Get-ChildItem -Path "C:\Windows" | Select-Object -Last 3Você pode combinar os dois cmdlets para filtrar e exibir propriedades específicas.
Get-Process | Where-Object { $_.WorkingSet -gt 200MB } | Select-Object Name, WorkingSetGet-Service | Where-Object { $_.Status -eq "Running" } | Select-Object DisplayName, StatusPara ordenar os resultados, você pode usar Sort-Object.
Get-Process | Sort-Object WorkingSet -Descending | Select-Object Name, WorkingSet -First 10Format-Table(ouft): Exibe os resultados em formato de tabela.Format-List(oufl): Exibe as propriedades de forma detalhada.
Get-Process | Format-Table Name, CPU, WorkingSetGet-Service | Where-Object { $_.DisplayName -like "*Windows*" } | Format-List *