powershelladvanced154 snippets

PowerShell: Automatize o Chato e Vá para Casa Cedo

A GUI é para amadores. Domine os One-Liners e Pipelines que gerenciam 100 servidores simultaneamente. Pare de clicar em janelas e comece a tratar sua infraestrutura como código. Active Directory, WMI e processos em lote sem dor.

Seções12
1

🟢 Comandos Básicos

14 snippets

Fundamentos para iniciar e interagir com o ambiente PowerShell, incluindo navegação no sistema de arquivos, obtenção de informações essenciais e acesso à documentação.

Get-Location

Exibe o caminho completo do diretório de trabalho atual, funcionando como o comando `pwd` (print working directory) em sistemas baseados em Unix/Linux.

powershell
Get-Location

Set-Location

Muda o diretório de trabalho atual para o caminho especificado. Equivalente ao comando `cd` (change directory). Pode ser usado com caminhos absolutos ou relativos.

powershell
Set-Location C:\Users

Get-ChildItem

Lista os arquivos e subdiretórios no diretório atual ou no caminho especificado. Similar ao comando `ls` em sistemas Unix/Linux ou `dir` no prompt de comando do Windows.

powershell
Get-ChildItem

Get-ChildItem -Force

Lista arquivos e diretórios, incluindo itens ocultos e de sistema que normalmente são omitidos. O parâmetro `-Force` é crucial para revelar esses itens.

powershell
Get-ChildItem -Force

Get-ChildItem -Recurse

Lista os arquivos e diretórios de forma recursiva, percorrendo todos os subdiretórios a partir do caminho especificado. Útil para explorar a estrutura completa de uma pasta.

powershell
Get-ChildItem -Recurse

Get-ComputerInfo

Coleta e exibe informações detalhadas sobre o sistema operacional e o hardware do computador local, como versão do SO, fabricante, modelo, memória RAM e processador.

powershell
Get-ComputerInfo

Get-Process

Lista todos os processos em execução no sistema, fornecendo detalhes como ID do processo (PID), nome, utilização de CPU e memória. Essencial para monitoramento e diagnóstico.

powershell
Get-Process

Get-Service

Exibe uma lista de todos os serviços instalados no sistema, mostrando seu status (em execução, parado, etc.) e nome de exibição. Fundamental para gerenciamento de serviços.

powershell
Get-Service

Get-EventLog -LogName Application

Recupera eventos de um log de eventos específico. Neste exemplo, ele lista os eventos do log de Aplicação, que registra eventos gerados por aplicativos e programas.

powershell
Get-EventLog -LogName Application

Get-HotFix

Lista todas as atualizações (hotfixes) instaladas no sistema operacional Windows, incluindo o ID da atualização, quem a instalou e a data de instalação.

powershell
Get-HotFix

Get-Help

Fornece informações detalhadas sobre um cmdlet ou função específica. Use `-Full` para todos os detalhes, `-Examples` para exemplos de uso e `-Online` para abrir a documentação online.

powershell
Get-Help Get-Process

Get-Command

Exibe informações sobre cmdlets, funções, aliases e scripts disponíveis no PowerShell. Útil para descobrir comandos e entender seus parâmetros.

powershell
Get-Command Get-Process

Update-Help

Baixa e instala os arquivos de ajuda mais recentes para os módulos do PowerShell. É recomendado executar este comando regularmente para ter acesso à documentação atualizada.

powershell
Update-Help

Get-Module -ListAvailable

Lista todos os módulos do PowerShell que estão disponíveis no sistema, incluindo aqueles que ainda não foram carregados na sessão atual.

powershell
Get-Module -ListAvailable
2

📁 Gerenciamento de Arquivos

14 snippets

Comandos essenciais para criar, remover, copiar, mover, renomear e manipular o conteúdo de arquivos e diretórios no sistema de arquivos.

New-Item (File)

Cria um novo arquivo no caminho especificado. O parâmetro `-ItemType File` indica que um arquivo deve ser criado.

powershell
New-Item -Path "arquivo.txt" -ItemType File

New-Item (Directory)

Cria um novo diretório (pasta) no caminho especificado. O parâmetro `-ItemType Directory` indica que um diretório deve ser criado.

powershell
New-Item -Path "pasta" -ItemType Directory

Remove-Item (File)

Exclui um arquivo específico. Por padrão, ele solicitará confirmação antes de remover o item.

powershell
Remove-Item "arquivo.txt"

Remove-Item (Directory)

Exclui um diretório e todo o seu conteúdo (subdiretórios e arquivos). O parâmetro `-Recurse` é obrigatório para remover diretórios não vazios.

powershell
Remove-Item "pasta" -Recurse

Remove-Item -Force

Força a remoção de um arquivo ou diretório, ignorando avisos e prompts de confirmação, mesmo que o item esteja em uso ou seja somente leitura. Use com cautela.

powershell
Remove-Item "arquivo.txt" -Force

Copy-Item (File)

Copia um arquivo de um local para outro. Se o destino for um nome de arquivo, ele será copiado com esse novo nome. Se for um diretório, o arquivo manterá seu nome original.

powershell
Copy-Item "origem.txt" "destino.txt"

Copy-Item (Directory)

Copia um diretório e todo o seu conteúdo (subdiretórios e arquivos) para um novo local. O parâmetro `-Recurse` é necessário para copiar diretórios completos.

powershell
Copy-Item "pasta" "destino" -Recurse

Move-Item

Move um arquivo ou diretório de um local para outro. Pode ser usado também para renomear um item, movendo-o para o mesmo diretório com um novo nome.

powershell
Move-Item "antigo.txt" "novo.txt"

Rename-Item

Renomeia um arquivo ou diretório sem alterar seu local. O primeiro argumento é o caminho do item atual, e o segundo é o novo nome.

powershell
Rename-Item "antigo.txt" "novo.txt"

Get-Content

Lê o conteúdo de um arquivo de texto e o exibe na console ou o passa para o pipeline para processamento posterior. Útil para visualizar logs ou dados.

powershell
Get-Content "arquivo.txt"

Get-Content (Primeiras Linhas)

Lê o conteúdo de um arquivo e, usando o pipeline com `Select-Object -First`, exibe apenas as primeiras 10 linhas, útil para arquivos grandes.

powershell
Get-Content "arquivo.txt" | Select-Object -First 10

Set-Content

Escreve ou sobrescreve o conteúdo de um arquivo. Se o arquivo não existir, ele será criado. Se existir, seu conteúdo anterior será totalmente substituído.

powershell
Set-Content "arquivo.txt" "conteúdo"

Add-Content

Adiciona conteúdo ao final de um arquivo existente. Se o arquivo não existir, ele será criado. Preserva o conteúdo anterior do arquivo.

powershell
Add-Content "arquivo.txt" "mais conteúdo"

Out-File

Redireciona a saída de um comando para um arquivo. Por exemplo, `Get-Process | Out-File "processos.txt"` salvaria a lista de processos no arquivo.

powershell
Out-File "saida.txt"
3

🔤 Variáveis e Tipos

17 snippets

Como declarar variáveis, manipular diferentes tipos de dados como strings, inteiros, booleanos, e utilizar estruturas de coleção como arrays e hash tables.

Variável String

Declara uma variável `$nome` e atribui a ela um valor do tipo string (texto). Variáveis no PowerShell começam com `$`.

powershell
$nome = "João"

Variável Inteiro

Declara uma variável `$idade` e atribui a ela um valor do tipo inteiro (número sem casas decimais).

powershell
$idade = 25

Variável Decimal

Declara uma variável `$altura` e atribui a ela um valor do tipo decimal (número com casas decimais).

powershell
$altura = 1.75

Variável Booleano

Declara uma variável `$ativo` e atribui a ela um valor booleano, que pode ser `$true` (verdadeiro) ou `$false` (falso).

powershell
$ativo = $true

Variável Nulo

Declara uma variável `$dados` e atribui a ela o valor `$null`, indicando a ausência de um valor ou objeto.

powershell
$dados = $null

Array de Strings

Cria um array (lista ordenada) de strings. O operador `@()` é usado para definir um array literal.

powershell
$lista = @("item1", "item2", "item3")

Array de Números (Range)

Cria um array de números inteiros de 1 a 10 usando o operador de range (`..`).

powershell
$numeros = 1..10

Acessar Elemento do Array

Acessa um elemento específico de um array usando seu índice (posição). O PowerShell usa indexação baseada em zero, então `[0]` acessa o primeiro elemento.

powershell
$lista[0]

Último Elemento do Array

Acessa o último elemento de um array usando indexação negativa. `-1` refere-se ao último elemento, `-2` ao penúltimo, e assim por diante.

powershell
$lista[-1]

Tamanho do Array

Retorna o número de elementos (tamanho) de um array usando a propriedade `.Count`.

powershell
$lista.Count

Adicionar Elemento ao Array

Adiciona um novo elemento ao final de um array. Note que isso cria um novo array com o elemento adicionado, não modifica o array original in-place.

powershell
$lista += "novo"

Criar Hashtable

Cria uma hashtable (dicionário ou mapa), que é uma coleção de pares chave-valor. As chaves são únicas e os valores podem ser de qualquer tipo.

powershell
$pessoa = @{Nome="João"; Idade=25}

Acessar Hashtable por Ponto

Acessa o valor associado a uma chave em uma hashtable usando a notação de ponto, se a chave for um nome de propriedade válido.

powershell
$pessoa.Nome

Acessar Hashtable por Chave

Acessa o valor associado a uma chave em uma hashtable usando a notação de colchetes e o nome da chave como string. Funciona para qualquer chave, incluindo aquelas com caracteres especiais.

powershell
$pessoa["Nome"]

Adicionar Propriedade à Hashtable

Adiciona uma nova chave-valor a uma hashtable existente ou atualiza o valor de uma chave existente.

powershell
$pessoa.Cidade = "São Paulo"

Listar Chaves da Hashtable

Retorna uma coleção de todas as chaves presentes na hashtable.

powershell
$pessoa.Keys

Listar Valores da Hashtable

Retorna uma coleção de todos os valores presentes na hashtable.

powershell
$pessoa.Values
4

🔀 Estruturas de Controle

8 snippets

Comandos para controlar o fluxo de execução de scripts, permitindo a tomada de decisões condicionais e a repetição de blocos de código.

If/Else Simples

Executa um bloco de código se uma condição for verdadeira (`if`) e outro bloco se a condição for falsa (`else`). O operador `-ge` significa "maior ou igual a".

powershell
if ($idade -ge 18) {
    Write-Host "Maior de idade"
} else {
    Write-Host "Menor de idade"
}

If/Elseif/Else Múltiplo

Permite testar múltiplas condições em sequência. O bloco `elseif` é executado se a condição anterior for falsa e sua própria condição for verdadeira.

powershell
if ($nota -ge 7) {
    Write-Host "Aprovado"
} elseif ($nota -ge 5) {
    Write-Host "Recuperação"
} else {
    Write-Host "Reprovado"
}

Loop For Tradicional

Executa um bloco de código um número especificado de vezes. Consiste em uma inicialização, uma condição de término e uma expressão de incremento/decremento.

powershell
for ($i = 1; $i -le 10; $i++) {
    Write-Host $i
}

Loop Foreach

Itera sobre cada item em uma coleção (como um array ou o resultado de um cmdlet), executando um bloco de código para cada item.

powershell
foreach ($item in $lista) {
    Write-Host $item
}

Loop Foreach (Iterar Arquivos)

Demonstra o uso do `foreach` para iterar sobre os objetos retornados por `Get-ChildItem`, exibindo o nome de cada arquivo ou diretório.

powershell
foreach ($arquivo in Get-ChildItem) {
    Write-Host $arquivo.Name
}

Loop While

Executa um bloco de código repetidamente enquanto uma condição especificada for verdadeira. A condição é avaliada antes de cada iteração.

powershell
$contador = 0
while ($contador -lt 5) {
    Write-Host $contador
    $contador++
}

Loop Do-While

Executa um bloco de código pelo menos uma vez e, em seguida, repete enquanto uma condição especificada for verdadeira. A condição é avaliada após cada iteração.

powershell
do {
    $resposta = Read-Host "Digite 'sair' para parar"
} while ($resposta -ne "sair")

Switch Case

Permite comparar um valor com múltiplos padrões e executar um bloco de código correspondente ao primeiro padrão que corresponder. O bloco `default` é executado se nenhuma correspondência for encontrada.

powershell
switch ($opcao) {
    1 { Write-Host "Opção 1" }
    2 { Write-Host "Opção 2" }
    default { Write-Host "Opção inválida" }
}
5

⚡ Funções e Scripts

9 snippets

Criação e utilização de funções para modularizar o código, definir parâmetros avançados e organizar scripts em módulos para reuso e automação.

Função Simples

Define uma função chamada `Saudar` que aceita um parâmetro `$nome` do tipo string e exibe uma saudação personalizada.

powershell
function Saudar($nome) {
    param([string]$nome)
    Write-Host "Olá, $nome!"
}

Função com Parâmetros Tipados

Define uma função que calcula a área de um triângulo, especificando os tipos de dados (`[double]`) para os parâmetros `$base` e `$altura` e retornando um valor.

powershell
function Calcular-Area($base, $altura) {
    param([double]$base, [double]$altura)
    return ($base * $altura) / 2
}

Função com Parâmetro Padrão

Define uma função onde o parâmetro `$servidor` tem um valor padrão de "localhost". Se o usuário não fornecer um valor para `$servidor`, o padrão será usado.

powershell
function Testar-Conexao {
    param([string]$servidor = "localhost")
    Test-Connection $servidor
}

Parâmetros Avançados

Exemplo de como usar atributos de parâmetro avançados: `Mandatory=$true` torna o parâmetro `$Caminho` obrigatório, e `[switch]$Recurse` cria um parâmetro booleano sem a necessidade de um valor.

powershell
function Processar-Arquivos {
    param(
        [Parameter(Mandatory=$true)]
        [string]$Caminho,
        
        [Parameter()]
        [switch]$Recurse
    )
    # Código da função
}

Parâmetro que Aceita Pipeline

Demonstra um parâmetro que pode receber entrada do pipeline (`ValueFromPipeline=$true`). Isso permite que a função processe objetos que são passados de outros cmdlets.

powershell
function Exportar-Dados {
    param(
        [Parameter(ValueFromPipeline=$true)]
        [object[]]$Dados
    )
    $Dados | Export-Csv -Path "saida.csv"
}

Importar Script

Executa um script PowerShell no escopo da sessão atual. O ponto (`.`) e o espaço são essenciais para que as variáveis e funções definidas no script fiquem disponíveis na sessão.

powershell
. .\meu-script.ps1

Importar Módulo

Carrega um módulo PowerShell na sessão atual, tornando seus cmdlets, funções e variáveis disponíveis. Módulos são a forma preferencial de organizar e distribuir código PowerShell.

powershell
Import-Module .\meu-modulo.psm1

Exportar Função de Módulo

Especifica quais funções, cmdlets, variáveis ou aliases de um módulo devem ser exportados e tornados públicos para uso por outras sessões após a importação do módulo.

powershell
Export-ModuleMember -Function MinhaFuncao

$PSVersionTable

Uma variável automática que exibe detalhes sobre a versão do PowerShell, a edição, a versão do .NET Framework e outras informações do ambiente de execução.

powershell
$PSVersionTable
6

🔄 Pipeline e Operadores

20 snippets

Aproveite o poder do pipeline do PowerShell para encadear comandos e usar operadores de comparação e lógicos para filtrar e manipular dados de forma eficiente.

Filtrar Processos por CPU

Obtém todos os processos e, via pipeline (`|`), filtra-os usando `Where-Object` para selecionar apenas aqueles cuja utilização de CPU (`$_.CPU`) é maior que 100 segundos.

powershell
Get-Process | Where-Object {$_.CPU -gt 100}

Filtrar Arquivos por Extensão

Lista todos os itens no diretório atual e filtra-os para exibir apenas aqueles que têm a extensão ".txt" (`$_.Extension -eq ".txt"`).

powershell
Get-ChildItem | Where-Object {$_.Extension -eq ".txt"}

Filtrar Serviços em Execução

Obtém todos os serviços e filtra-os para mostrar apenas aqueles cujo status (`$_.Status`) é "Running" (em execução).

powershell
Get-Service | Where-Object {$_.Status -eq "Running"}

Ordenar Processos por CPU

Lista todos os processos e os ordena com base na utilização da CPU (`CPU`), em ordem decrescente (`-Descending`), mostrando os processos mais intensivos primeiro.

powershell
Get-Process | Sort-Object CPU -Descending

Operador -eq (Igual)

Operador de comparação que verifica se dois valores são iguais. Retorna `$true` se forem iguais, `$false` caso contrário.

powershell
$a -eq $b

Operador -ne (Diferente)

Operador de comparação que verifica se dois valores são diferentes. Retorna `$true` se forem diferentes, `$false` caso contrário.

powershell
$a -ne $b

Operador -gt (Maior que)

Operador de comparação que verifica se o valor à esquerda é estritamente maior que o valor à direita.

powershell
$a -gt $b

Operador -ge (Maior ou Igual)

Operador de comparação que verifica se o valor à esquerda é maior ou igual ao valor à direita.

powershell
$a -ge $b

Operador -lt (Menor que)

Operador de comparação que verifica se o valor à esquerda é estritamente menor que o valor à direita.

powershell
$a -lt $b

Operador -le (Menor ou Igual)

Operador de comparação que verifica se o valor à esquerda é menor ou igual ao valor à direita.

powershell
$a -le $b

Operador -like (Contém Wildcard)

Operador de comparação que usa curingas (wildcards) como `*` e `?` para encontrar padrões em strings. Retorna `$true` se a string `$a` contiver "texto".

powershell
$a -like "*texto*"

Operador -match (Regex)

Operador de comparação que usa expressões regulares (regex) para encontrar padrões em strings. Retorna `$true` se a string `$a` corresponder ao padrão regex.

powershell
$a -match "regex"

Operador -and (E Lógico)

Operador lógico que retorna `$true` se ambas as expressões `$a` e `$b` forem verdadeiras. Caso contrário, retorna `$false`.

powershell
$a -and $b

Operador -or (Ou Lógico)

Operador lógico que retorna `$true` se pelo menos uma das expressões `$a` ou `$b` for verdadeira. Retorna `$false` apenas se ambas forem falsas.

powershell
$a -or $b

Operador -not (Negação)

Operador lógico que inverte o valor booleano de uma expressão. Se `$a` for `$true`, `-not $a` será `$false`, e vice-versa.

powershell
-not $a

Operador -xor (OU Exclusivo)

Operador lógico que retorna `$true` se apenas uma das expressões `$a` ou `$b` for verdadeira, mas não ambas. Retorna `$false` se ambas forem verdadeiras ou ambas falsas.

powershell
$a -xor $b

Select-Object (Propriedades)

Seleciona propriedades específicas de objetos no pipeline. Neste exemplo, ele exibe apenas o nome, CPU e memória de cada processo.

powershell
Get-Process | Select-Object Name, CPU, Memory

Select-Object -First

Seleciona apenas os primeiros `N` objetos do pipeline. Útil para limitar a saída ou obter amostras de dados.

powershell
Get-Process | Select-Object -First 10

Select-Object -Last

Seleciona apenas os últimos `N` objetos do pipeline. Útil para ver os itens mais recentes ou finais de uma lista.

powershell
Get-Process | Select-Object -Last 5

Select-Object -Unique

Remove objetos duplicados do pipeline, garantindo que cada objeto na saída seja único. Útil para obter uma lista distinta de valores.

powershell
Get-Process | Select-Object -Unique
7

⚙️ Gerenciamento de Processos

14 snippets

Comandos para listar, monitorar, iniciar e encerrar processos e serviços no sistema operacional Windows, fundamental para administração e troubleshooting.

Get-Process (Todos)

Lista todos os processos atualmente em execução no sistema, fornecendo informações como ID, nome, CPU e memória utilizada.

powershell
Get-Process

Get-Process (Específico)

Obtém informações sobre processos com um nome específico. Pode-se usar curingas, como `"chrome*"` para todos os processos que começam com "chrome".

powershell
Get-Process -Name "chrome"

Get-Process (Intensivos)

Filtra e exibe processos que consumiram mais de 100 segundos de tempo de CPU, ajudando a identificar processos que estão sobrecarregando o sistema.

powershell
Get-Process | Where-Object {$_.CPU -gt 100}

Top 10 Processos por CPU

Lista os 10 processos que mais consomem CPU, ordenados em ordem decrescente. Útil para identificar gargalos de desempenho.

powershell
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10

Start-Process (Sem Parâmetros)

Inicia um novo processo no sistema. Neste exemplo, ele abre o Bloco de Notas.

powershell
Start-Process notepad.exe

Start-Process (Com Parâmetro)

Inicia um processo e passa argumentos para ele. Aqui, o Chrome é aberto e navega diretamente para google.com.

powershell
Start-Process chrome.exe "https://google.com"

Stop-Process (Por Nome)

Encerra um processo com um nome específico. Por padrão, ele solicitará confirmação. Use `-Force` para forçar o encerramento.

powershell
Stop-Process -Name "notepad"

Stop-Process (Por ID)

Encerra um processo usando seu ID (PID) exclusivo. Este método é mais preciso do que usar o nome, especialmente quando há múltiplos processos com o mesmo nome.

powershell
Stop-Process -Id 1234

Stop-Process -Force

Força o encerramento de um processo pelo nome, ignorando prompts de confirmação e tentativas de encerramento gracioso. Use com cautela, pois pode resultar em perda de dados.

powershell
Stop-Process -Name "chrome" -Force

Get-Service (Todos)

Lista todos os serviços instalados no sistema, incluindo seu status atual (em execução, parado) e nome de exibição.

powershell
Get-Service

Get-Service (Específico)

Obtém informações sobre um serviço específico pelo seu nome. Útil para verificar o status ou propriedades de um serviço individual.

powershell
Get-Service -Name "Spooler"

Start-Service

Inicia um serviço parado. O serviço "Spooler" é o serviço de Spooler de Impressão do Windows.

powershell
Start-Service -Name "Spooler"

Stop-Service

Para um serviço em execução. Por padrão, ele solicitará confirmação. Use `-Force` para forçar a parada.

powershell
Stop-Service -Name "Spooler"

Restart-Service

Reinicia um serviço, primeiro parando-o e depois iniciando-o novamente. Útil para aplicar configurações ou resolver problemas temporários.

powershell
Restart-Service -Name "Spooler"
8

🌐 Rede e Conectividade

13 snippets

Comandos para diagnosticar, configurar e interagir com a rede, incluindo adaptadores de rede, endereços IP, firewall e requisições HTTP/REST.

Get-NetAdapter

Lista todos os adaptadores de rede instalados no sistema, fornecendo informações como nome, status, velocidade e tipo de mídia.

powershell
Get-NetAdapter

Get-NetIPAddress

Exibe os endereços IP (IPv4 e IPv6) configurados em cada adaptador de rede, juntamente com o prefixo de sub-rede e o gateway padrão.

powershell
Get-NetIPAddress

Get-NetRoute

Exibe a tabela de rotas IP do sistema, mostrando como o tráfego de rede é direcionado para diferentes destinos.

powershell
Get-NetRoute

Test-Connection

Envia pacotes ICMP (ping) para um host remoto para verificar a conectividade de rede. Retorna detalhes sobre o tempo de resposta e o status da conexão.

powershell
Test-Connection google.com

Test-NetConnection

Testa a conectividade de rede para um host e porta específicos. Útil para verificar se um serviço está acessível em uma porta, como HTTP (porta 80).

powershell
Test-NetConnection google.com -Port 80

New-NetIPAddress

Configura um novo endereço IP estático em um adaptador de rede. `-InterfaceAlias` especifica o adaptador, `-IPAddress` o endereço e `-PrefixLength` a máscara de sub-rede.

powershell
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.100 -PrefixLength 24

Set-DnsClientServerAddress

Define os endereços dos servidores DNS para um adaptador de rede específico. Neste exemplo, ele configura o DNS primário para o DNS público do Google.

powershell
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 8.8.8.8

Get-NetFirewallRule

Lista todas as regras do Firewall do Windows Defender, incluindo regras de entrada e saída, programas e portas afetadas.

powershell
Get-NetFirewallRule

New-NetFirewallRule

Cria uma nova regra de firewall. Este exemplo cria uma regra de entrada para permitir conexões RDP (porta TCP 3389).

powershell
New-NetFirewallRule -DisplayName "Permitir RDP" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow

Invoke-WebRequest

Envia uma requisição HTTP/HTTPS para um recurso web. Retorna um objeto que contém o status, cabeçalhos e conteúdo da resposta. Útil para interagir com APIs ou baixar páginas.

powershell
Invoke-WebRequest https://api.example.com

Invoke-RestMethod

Envia uma requisição HTTP/HTTPS e converte a resposta (geralmente JSON ou XML) diretamente em um objeto PowerShell, facilitando a manipulação de dados de APIs RESTful.

powershell
Invoke-RestMethod https://api.example.com/data

Invoke-WebRequest (Obter Conteúdo)

Realiza uma requisição web e armazena o objeto de resposta em uma variável. Em seguida, acessa a propriedade `.Content` para obter o corpo da resposta como uma string.

powershell
$response = Invoke-WebRequest https://example.com
$response.Content

Invoke-WebRequest (Download)

Baixa o conteúdo de uma URL e o salva diretamente em um arquivo local. O parâmetro `-OutFile` especifica o caminho e nome do arquivo de destino.

powershell
Invoke-WebRequest https://example.com -OutFile "pagina.html"
9

👥 Active Directory

13 snippets

Comandos para gerenciar usuários, grupos e realizar consultas avançadas no Active Directory, essenciais para administradores de domínio e automação de tarefas de TI.

Get-ADUser (Todos)

Lista todos os objetos de usuário no Active Directory. O filtro `*` indica que todos os usuários devem ser retornados.

powershell
Get-ADUser -Filter *

Get-ADUser (Específico)

Obtém informações detalhadas sobre um usuário específico do Active Directory, usando seu SamAccountName, DistinguishedName, SID ou GUID.

powershell
Get-ADUser -Identity "joao.silva"

New-ADUser

Cria um novo objeto de usuário no Active Directory. É necessário fornecer pelo menos `-Name` e `-SamAccountName`. Recomenda-se também definir uma senha e o caminho da OU.

powershell
New-ADUser -Name "novo.usuario" -SamAccountName "novo.usuario" -GivenName "Novo" -Surname "Usuario" -AccountPassword (Convert-ToSecureString "Senha@123" -AsPlainText -Force) -Enabled $true -Path "OU=Usuarios,DC=dominio,DC=local"

Set-ADUser

Modifica as propriedades de um usuário existente no Active Directory. Use `-Identity` para especificar o usuário e os parâmetros para as propriedades a serem alteradas.

powershell
Set-ADUser -Identity "joao.silva" -Department "TI" -Office "Sala 101"

Disable-ADAccount

Desabilita uma conta de usuário no Active Directory, impedindo que o usuário faça logon no domínio. A conta permanece no AD, mas inativa.

powershell
Disable-ADAccount -Identity "joao.silva"

Get-ADGroup (Todos)

Lista todos os objetos de grupo no Active Directory. O filtro `*` indica que todos os grupos devem ser retornados.

powershell
Get-ADGroup -Filter *

Get-ADGroupMember

Lista todos os membros (usuários e/ou outros grupos) de um grupo específico do Active Directory. O nome do grupo pode ser o SamAccountName ou DistinguishedName.

powershell
Get-ADGroupMember "TI"

Add-ADGroupMember

Adiciona um ou mais usuários ou grupos a um grupo existente no Active Directory. `-Identity` especifica o grupo e `-Members` os objetos a serem adicionados.

powershell
Add-ADGroupMember -Identity "TI" -Members "joao.silva"

Remove-ADGroupMember

Remove um ou mais usuários ou grupos de um grupo existente no Active Directory. `-Identity` especifica o grupo e `-Members` os objetos a serem removidos.

powershell
Remove-ADGroupMember -Identity "TI" -Members "joao.silva"

Search-ADAccount (Contas Desabilitadas)

Pesquisa contas no Active Directory com base em critérios específicos. `-AccountDisabled` retorna todas as contas de usuário que estão desabilitadas.

powershell
Search-ADAccount -AccountDisabled

Get-ADUser (Senhas que Não Expiram)

Filtra usuários no Active Directory para encontrar aqueles cuja senha está configurada para nunca expirar. O parâmetro `-Properties` é necessário para exibir essa propriedade.

powershell
Get-ADUser -Filter {PasswordNeverExpires -eq $true} -Properties PasswordNeverExpires

Get-ADUser (Inativos 90 Dias)

Filtra usuários que não fazem logon há mais de 90 dias. `-Properties LastLogonDate` é necessário para que a propriedade seja retornada e filtrada.

powershell
Get-ADUser -Filter {LastLogonDate -lt (Get-Date).AddDays(-90)} -Properties LastLogonDate

Exportar Usuários para CSV

Exporta todos os usuários do Active Directory, com todas as suas propriedades (`-Properties *`), para um arquivo CSV. `-NoTypeInformation` evita a linha de tipo no arquivo.

powershell
Get-ADUser -Filter * -Properties * | Export-Csv "usuarios.csv" -NoTypeInformation
10

🔒 Segurança e Permissões

10 snippets

Gerenciamento de políticas de execução de scripts, assinatura de código e controle de acesso a arquivos, garantindo a segurança e integridade do ambiente PowerShell.

Get-ExecutionPolicy

Exibe a política de execução atual do PowerShell, que determina quais scripts podem ser executados e sob quais condições. As políticas incluem `Restricted`, `RemoteSigned`, `AllSigned` e `Bypass`.

powershell
Get-ExecutionPolicy

Set-ExecutionPolicy RemoteSigned

Define a política de execução para `RemoteSigned`. Isso permite que scripts criados localmente sejam executados sem assinatura, mas exige que scripts baixados da internet sejam assinados por um editor confiável.

powershell
Set-ExecutionPolicy RemoteSigned

Set-ExecutionPolicy Bypass (Temporário)

Define a política de execução para `Bypass` apenas para a sessão atual do PowerShell (`-Scope Process`). Isso permite a execução de todos os scripts sem restrições, mas a política é revertida ao fechar a sessão.

powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Set-ExecutionPolicy AllSigned (Usuário Atual)

Define a política de execução para `AllSigned` para o usuário atual. Isso exige que todos os scripts, incluindo os criados localmente, sejam assinados por um editor confiável.

powershell
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy AllSigned

Get-ChildItem Cert:\CurrentUser\My

Lista todos os certificados digitais instalados no repositório "Pessoal" (My) do usuário atual. Útil para verificar certificados disponíveis para assinatura de código.

powershell
Get-ChildItem Cert:\CurrentUser\My

Get-AuthenticodeSignature

Verifica a assinatura digital Authenticode de um arquivo, como um script PowerShell. Retorna informações sobre o status da assinatura, o signatário e o carimbo de data/hora.

powershell
Get-AuthenticodeSignature "script.ps1"

Set-AuthenticodeSignature

Assina digitalmente um script PowerShell usando um certificado Authenticode. `$cert` deve ser uma variável contendo o certificado obtido, por exemplo, via `Get-ChildItem Cert:\...`.

powershell
Set-AuthenticodeSignature -FilePath "script.ps1" -Certificate $cert

Get-Acl (Permissões de Pasta)

Exibe as Access Control Lists (ACLs), ou permissões de segurança, de um arquivo ou diretório. Mostra proprietário, grupo e as regras de acesso.

powershell
Get-Acl "C:\pasta"

Definir Permissão de Arquivo/Pasta

Define uma nova regra de permissão para um arquivo ou pasta. Este exemplo concede controle total (`FullControl`) ao "Usuario" na pasta "C:\pasta".

powershell
$acl = Get-Acl "C:\pasta"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("Usuario","FullControl","Allow")
$acl.SetAccessRule($accessRule)
Set-Acl "C:\pasta" $acl

Get-Acl (Detalhado)

Exibe as permissões de um arquivo ou pasta em um formato de lista detalhado, mostrando todas as entradas de controle de acesso (ACEs) de forma mais legível.

powershell
Get-Acl "arquivo.txt" | Format-List
11

⏰ Automação e Agendamento

11 snippets

Técnicas para automatizar tarefas repetitivas, agendar a execução de scripts e gerenciar jobs em segundo plano, otimizando a eficiência operacional.

Get-ScheduledTask

Lista todas as tarefas agendadas configuradas no sistema operacional Windows, incluindo seu status, nome e horário da próxima execução.

powershell
Get-ScheduledTask

Register-ScheduledTask

Cria uma nova tarefa agendada. Este exemplo cria uma tarefa que executa `notepad.exe` diariamente às 9h da manhã. `New-ScheduledTaskAction` define a ação e `New-ScheduledTaskTrigger` define o gatilho.

powershell
Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute "notepad.exe") -Trigger (New-ScheduledTaskTrigger -Daily -At 9am) -TaskName "AbrirNotepadDiariamente" -Description "Abre o Bloco de Notas todos os dias às 9h."

Start-ScheduledTask

Inicia a execução de uma tarefa agendada manualmente, independentemente de seu gatilho programado.

powershell
Start-ScheduledTask -TaskName "MinhaTarefa"

Disable-ScheduledTask

Desabilita uma tarefa agendada, impedindo que ela seja executada por seus gatilhos. A tarefa permanece no sistema, mas em estado inativo.

powershell
Disable-ScheduledTask -TaskName "MinhaTarefa"

Unregister-ScheduledTask

Remove permanentemente uma tarefa agendada do sistema. O parâmetro `-Confirm:$false` evita o prompt de confirmação.

powershell
Unregister-ScheduledTask -TaskName "MinhaTarefa" -Confirm:$false

Start-Job

Inicia um script ou comando em segundo plano como um job. O `-ScriptBlock` contém o código a ser executado, e `-Name` atribui um nome ao job.

powershell
Start-Job -ScriptBlock { Get-Process } -Name "ProcessosJob"

Get-Job

Lista todos os jobs em segundo plano que estão em execução ou foram concluídos na sessão atual do PowerShell.

powershell
Get-Job

Receive-Job

Recupera os resultados de um job em segundo plano. Após a recuperação, os resultados são removidos do job. Use `-Keep` para manter os resultados.

powershell
Receive-Job -Id 1

Stop-Job

Encerra um job em segundo plano que está em execução. Pode ser necessário usar `-Force` para jobs que não respondem.

powershell
Stop-Job -Id 1

Remove-Job

Remove um job em segundo plano da sessão atual do PowerShell. Isso libera os recursos associados ao job.

powershell
Remove-Job -Id 1

Workflow Básico

Define um workflow PowerShell, que permite a execução de tarefas em paralelo (`parallel`) ou em sequência (`sequence`), com resiliência a reinicializações e suporte a pontos de verificação.

powershell
workflow MeuWorkflow {
    parallel {
        Get-Process
        Get-Service
    }
    sequence {
        Write-Host "Concluído"
    }
}
12

🖥️ WMI e CIM

11 snippets

Exploração e manipulação de informações do sistema Windows usando WMI (Windows Management Instrumentation) e CIM (Common Information Model) para monitoramento, inventário e diagnóstico avançado.

Get-WmiObject (Info SO)

Consulta o WMI para obter informações detalhadas sobre o sistema operacional Windows, como versão, service pack, data de instalação e fabricante.

powershell
Get-WmiObject -Class Win32_OperatingSystem

Get-WmiObject (Info Hardware)

Consulta o WMI para obter informações gerais sobre o sistema do computador, incluindo nome do fabricante, modelo, nome do domínio e quantidade total de memória física.

powershell
Get-WmiObject -Class Win32_ComputerSystem

Get-WmiObject (Info CPU)

Consulta o WMI para obter detalhes sobre o(s) processador(es) do sistema, como fabricante, velocidade, número de núcleos e arquitetura.

powershell
Get-WmiObject -Class Win32_Processor

Get-WmiObject (Info Discos)

Consulta o WMI para obter informações sobre os discos lógicos (partições) do sistema, como letra da unidade, tamanho total, espaço livre e tipo de sistema de arquivos.

powershell
Get-WmiObject -Class Win32_LogicalDisk

Get-CimInstance (CIM Moderno)

Cmdlet moderno para consultar classes CIM (Common Information Model), que é a evolução do WMI. Oferece melhor desempenho e suporte a sessões remotas. Equivalente a `Get-WmiObject`.

powershell
Get-CimInstance -ClassName Win32_OperatingSystem

Get-CimInstance (Query CIM)

Executa uma consulta WQL (WMI Query Language) diretamente para filtrar objetos CIM. Este exemplo seleciona todos os processos com o nome "chrome.exe".

powershell
Get-CimInstance -Query "SELECT * FROM Win32_Process WHERE Name = 'chrome.exe'"

New-CimSession (Sessão Remota)

Cria uma nova sessão CIM para um computador remoto, permitindo que os cmdlets CIM sejam executados contra esse sistema. Requer permissões e conectividade de rede.

powershell
New-CimSession -ComputerName servidor

Get-CimInstance (Consulta Remota)

Executa uma consulta CIM em um computador remoto usando uma sessão CIM previamente estabelecida (`$session`). Este exemplo lista os serviços no servidor remoto.

powershell
Get-CimInstance -CimSession $session -ClassName Win32_Service

Get-EventLog (Últimos Eventos)

Recupera os 10 eventos mais recentes do log de eventos do sistema. Útil para uma rápida verificação de eventos recentes.

powershell
Get-EventLog -LogName System -Newest 10

Get-WinEvent (Eventos de Erro)

Um cmdlet mais avançado para acessar logs de eventos. Este exemplo filtra eventos do log de Aplicação com nível de erro (Level 2).

powershell
Get-WinEvent -FilterHashtable @{LogName='Application'; Level=2}

Get-Counter (Contador de Performance)

Obtém dados de contadores de desempenho do sistema. Este exemplo monitora o tempo de utilização total do processador em tempo real.

powershell
Get-Counter "\Processor(_Total)\% Processor Time"

Receba os ultimos artigos no seu email.

Follow Us: