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.
Get-LocationA 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.
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.
Exibe o caminho completo do diretório de trabalho atual, funcionando como o comando `pwd` (print working directory) em sistemas baseados em Unix/Linux.
Get-LocationMuda o diretório de trabalho atual para o caminho especificado. Equivalente ao comando `cd` (change directory). Pode ser usado com caminhos absolutos ou relativos.
Set-Location C:\UsersLista 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.
Get-ChildItemLista arquivos e diretórios, incluindo itens ocultos e de sistema que normalmente são omitidos. O parâmetro `-Force` é crucial para revelar esses itens.
Get-ChildItem -ForceLista 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.
Get-ChildItem -RecurseColeta 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.
Get-ComputerInfoLista 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.
Get-ProcessExibe 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.
Get-ServiceRecupera 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.
Get-EventLog -LogName ApplicationLista 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.
Get-HotFixFornece 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.
Get-Help Get-ProcessExibe informações sobre cmdlets, funções, aliases e scripts disponíveis no PowerShell. Útil para descobrir comandos e entender seus parâmetros.
Get-Command Get-ProcessBaixa 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.
Update-HelpLista 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.
Get-Module -ListAvailableComandos essenciais para criar, remover, copiar, mover, renomear e manipular o conteúdo de arquivos e diretórios no sistema de arquivos.
Cria um novo arquivo no caminho especificado. O parâmetro `-ItemType File` indica que um arquivo deve ser criado.
New-Item -Path "arquivo.txt" -ItemType FileCria um novo diretório (pasta) no caminho especificado. O parâmetro `-ItemType Directory` indica que um diretório deve ser criado.
New-Item -Path "pasta" -ItemType DirectoryExclui um arquivo específico. Por padrão, ele solicitará confirmação antes de remover o item.
Remove-Item "arquivo.txt"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.
Remove-Item "pasta" -RecurseForç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.
Remove-Item "arquivo.txt" -ForceCopia 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.
Copy-Item "origem.txt" "destino.txt"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.
Copy-Item "pasta" "destino" -RecurseMove 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.
Move-Item "antigo.txt" "novo.txt"Renomeia um arquivo ou diretório sem alterar seu local. O primeiro argumento é o caminho do item atual, e o segundo é o novo nome.
Rename-Item "antigo.txt" "novo.txt"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.
Get-Content "arquivo.txt"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.
Get-Content "arquivo.txt" | Select-Object -First 10Escreve 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.
Set-Content "arquivo.txt" "conteúdo"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.
Add-Content "arquivo.txt" "mais conteúdo"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.
Out-File "saida.txt"Como declarar variáveis, manipular diferentes tipos de dados como strings, inteiros, booleanos, e utilizar estruturas de coleção como arrays e hash tables.
Declara uma variável `$nome` e atribui a ela um valor do tipo string (texto). Variáveis no PowerShell começam com `$`.
$nome = "João"Declara uma variável `$idade` e atribui a ela um valor do tipo inteiro (número sem casas decimais).
$idade = 25Declara uma variável `$altura` e atribui a ela um valor do tipo decimal (número com casas decimais).
$altura = 1.75Declara uma variável `$ativo` e atribui a ela um valor booleano, que pode ser `$true` (verdadeiro) ou `$false` (falso).
$ativo = $trueDeclara uma variável `$dados` e atribui a ela o valor `$null`, indicando a ausência de um valor ou objeto.
$dados = $nullCria um array (lista ordenada) de strings. O operador `@()` é usado para definir um array literal.
$lista = @("item1", "item2", "item3")Cria um array de números inteiros de 1 a 10 usando o operador de range (`..`).
$numeros = 1..10Acessa 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.
$lista[0]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.
$lista[-1]Retorna o número de elementos (tamanho) de um array usando a propriedade `.Count`.
$lista.CountAdiciona 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.
$lista += "novo"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.
$pessoa = @{Nome="João"; Idade=25}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.
$pessoa.NomeAcessa 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.
$pessoa["Nome"]Adiciona uma nova chave-valor a uma hashtable existente ou atualiza o valor de uma chave existente.
$pessoa.Cidade = "São Paulo"Retorna uma coleção de todas as chaves presentes na hashtable.
$pessoa.KeysRetorna uma coleção de todos os valores presentes na hashtable.
$pessoa.ValuesComandos 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.
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".
if ($idade -ge 18) { Write-Host "Maior de idade"} else { Write-Host "Menor de idade"}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.
if ($nota -ge 7) { Write-Host "Aprovado"} elseif ($nota -ge 5) { Write-Host "Recuperação"} else { Write-Host "Reprovado"}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.
for ($i = 1; $i -le 10; $i++) { Write-Host $i}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.
foreach ($item in $lista) { Write-Host $item}Demonstra o uso do `foreach` para iterar sobre os objetos retornados por `Get-ChildItem`, exibindo o nome de cada arquivo ou diretório.
foreach ($arquivo in Get-ChildItem) { Write-Host $arquivo.Name}Executa um bloco de código repetidamente enquanto uma condição especificada for verdadeira. A condição é avaliada antes de cada iteração.
$contador = 0while ($contador -lt 5) { Write-Host $contador $contador++}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.
do { $resposta = Read-Host "Digite 'sair' para parar"} while ($resposta -ne "sair")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.
switch ($opcao) { 1 { Write-Host "Opção 1" } 2 { Write-Host "Opção 2" } default { Write-Host "Opção inválida" }}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.
Define uma função chamada `Saudar` que aceita um parâmetro `$nome` do tipo string e exibe uma saudação personalizada.
function Saudar($nome) { param([string]$nome) Write-Host "Olá, $nome!"}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.
function Calcular-Area($base, $altura) { param([double]$base, [double]$altura) return ($base * $altura) / 2}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.
function Testar-Conexao { param([string]$servidor = "localhost") Test-Connection $servidor}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.
function Processar-Arquivos { param( [Parameter(Mandatory=$true)] [string]$Caminho, [Parameter()] [switch]$Recurse ) # Código da função}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.
function Exportar-Dados { param( [Parameter(ValueFromPipeline=$true)] [object[]]$Dados ) $Dados | Export-Csv -Path "saida.csv"}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.
. .\meu-script.ps1Carrega 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.
Import-Module .\meu-modulo.psm1Especifica 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.
Export-ModuleMember -Function MinhaFuncaoUma 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.
$PSVersionTableAproveite 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.
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.
Get-Process | Where-Object {$_.CPU -gt 100}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"`).
Get-ChildItem | Where-Object {$_.Extension -eq ".txt"}Obtém todos os serviços e filtra-os para mostrar apenas aqueles cujo status (`$_.Status`) é "Running" (em execução).
Get-Service | Where-Object {$_.Status -eq "Running"}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.
Get-Process | Sort-Object CPU -DescendingOperador de comparação que verifica se dois valores são iguais. Retorna `$true` se forem iguais, `$false` caso contrário.
$a -eq $bOperador de comparação que verifica se dois valores são diferentes. Retorna `$true` se forem diferentes, `$false` caso contrário.
$a -ne $bOperador de comparação que verifica se o valor à esquerda é estritamente maior que o valor à direita.
$a -gt $bOperador de comparação que verifica se o valor à esquerda é maior ou igual ao valor à direita.
$a -ge $bOperador de comparação que verifica se o valor à esquerda é estritamente menor que o valor à direita.
$a -lt $bOperador de comparação que verifica se o valor à esquerda é menor ou igual ao valor à direita.
$a -le $bOperador de comparação que usa curingas (wildcards) como `*` e `?` para encontrar padrões em strings. Retorna `$true` se a string `$a` contiver "texto".
$a -like "*texto*"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.
$a -match "regex"Operador lógico que retorna `$true` se ambas as expressões `$a` e `$b` forem verdadeiras. Caso contrário, retorna `$false`.
$a -and $bOperador lógico que retorna `$true` se pelo menos uma das expressões `$a` ou `$b` for verdadeira. Retorna `$false` apenas se ambas forem falsas.
$a -or $bOperador lógico que inverte o valor booleano de uma expressão. Se `$a` for `$true`, `-not $a` será `$false`, e vice-versa.
-not $aOperador 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.
$a -xor $bSeleciona propriedades específicas de objetos no pipeline. Neste exemplo, ele exibe apenas o nome, CPU e memória de cada processo.
Get-Process | Select-Object Name, CPU, MemorySeleciona apenas os primeiros `N` objetos do pipeline. Útil para limitar a saída ou obter amostras de dados.
Get-Process | Select-Object -First 10Seleciona apenas os últimos `N` objetos do pipeline. Útil para ver os itens mais recentes ou finais de uma lista.
Get-Process | Select-Object -Last 5Remove objetos duplicados do pipeline, garantindo que cada objeto na saída seja único. Útil para obter uma lista distinta de valores.
Get-Process | Select-Object -UniqueComandos para listar, monitorar, iniciar e encerrar processos e serviços no sistema operacional Windows, fundamental para administração e troubleshooting.
Lista todos os processos atualmente em execução no sistema, fornecendo informações como ID, nome, CPU e memória utilizada.
Get-ProcessObté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".
Get-Process -Name "chrome"Filtra e exibe processos que consumiram mais de 100 segundos de tempo de CPU, ajudando a identificar processos que estão sobrecarregando o sistema.
Get-Process | Where-Object {$_.CPU -gt 100}Lista os 10 processos que mais consomem CPU, ordenados em ordem decrescente. Útil para identificar gargalos de desempenho.
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10Inicia um novo processo no sistema. Neste exemplo, ele abre o Bloco de Notas.
Start-Process notepad.exeInicia um processo e passa argumentos para ele. Aqui, o Chrome é aberto e navega diretamente para google.com.
Start-Process chrome.exe "https://google.com"Encerra um processo com um nome específico. Por padrão, ele solicitará confirmação. Use `-Force` para forçar o encerramento.
Stop-Process -Name "notepad"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.
Stop-Process -Id 1234Forç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.
Stop-Process -Name "chrome" -ForceLista todos os serviços instalados no sistema, incluindo seu status atual (em execução, parado) e nome de exibição.
Get-ServiceObtém informações sobre um serviço específico pelo seu nome. Útil para verificar o status ou propriedades de um serviço individual.
Get-Service -Name "Spooler"Inicia um serviço parado. O serviço "Spooler" é o serviço de Spooler de Impressão do Windows.
Start-Service -Name "Spooler"Para um serviço em execução. Por padrão, ele solicitará confirmação. Use `-Force` para forçar a parada.
Stop-Service -Name "Spooler"Reinicia um serviço, primeiro parando-o e depois iniciando-o novamente. Útil para aplicar configurações ou resolver problemas temporários.
Restart-Service -Name "Spooler"Comandos para diagnosticar, configurar e interagir com a rede, incluindo adaptadores de rede, endereços IP, firewall e requisições HTTP/REST.
Lista todos os adaptadores de rede instalados no sistema, fornecendo informações como nome, status, velocidade e tipo de mídia.
Get-NetAdapterExibe 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.
Get-NetIPAddressExibe a tabela de rotas IP do sistema, mostrando como o tráfego de rede é direcionado para diferentes destinos.
Get-NetRouteEnvia 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.
Test-Connection google.comTesta 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).
Test-NetConnection google.com -Port 80Configura 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.
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.100 -PrefixLength 24Define 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.
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 8.8.8.8Lista todas as regras do Firewall do Windows Defender, incluindo regras de entrada e saída, programas e portas afetadas.
Get-NetFirewallRuleCria uma nova regra de firewall. Este exemplo cria uma regra de entrada para permitir conexões RDP (porta TCP 3389).
New-NetFirewallRule -DisplayName "Permitir RDP" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action AllowEnvia 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.
Invoke-WebRequest https://api.example.comEnvia 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.
Invoke-RestMethod https://api.example.com/dataRealiza 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.
$response = Invoke-WebRequest https://example.com$response.ContentBaixa 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.
Invoke-WebRequest https://example.com -OutFile "pagina.html"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.
Lista todos os objetos de usuário no Active Directory. O filtro `*` indica que todos os usuários devem ser retornados.
Get-ADUser -Filter *Obtém informações detalhadas sobre um usuário específico do Active Directory, usando seu SamAccountName, DistinguishedName, SID ou GUID.
Get-ADUser -Identity "joao.silva"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.
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"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.
Set-ADUser -Identity "joao.silva" -Department "TI" -Office "Sala 101"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.
Disable-ADAccount -Identity "joao.silva"Lista todos os objetos de grupo no Active Directory. O filtro `*` indica que todos os grupos devem ser retornados.
Get-ADGroup -Filter *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.
Get-ADGroupMember "TI"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.
Add-ADGroupMember -Identity "TI" -Members "joao.silva"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.
Remove-ADGroupMember -Identity "TI" -Members "joao.silva"Pesquisa contas no Active Directory com base em critérios específicos. `-AccountDisabled` retorna todas as contas de usuário que estão desabilitadas.
Search-ADAccount -AccountDisabledFiltra 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.
Get-ADUser -Filter {PasswordNeverExpires -eq $true} -Properties PasswordNeverExpiresFiltra usuários que não fazem logon há mais de 90 dias. `-Properties LastLogonDate` é necessário para que a propriedade seja retornada e filtrada.
Get-ADUser -Filter {LastLogonDate -lt (Get-Date).AddDays(-90)} -Properties LastLogonDateExporta 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.
Get-ADUser -Filter * -Properties * | Export-Csv "usuarios.csv" -NoTypeInformationGerenciamento 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.
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`.
Get-ExecutionPolicyDefine 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.
Set-ExecutionPolicy RemoteSignedDefine 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.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy BypassDefine 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.
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy AllSignedLista 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.
Get-ChildItem Cert:\CurrentUser\MyVerifica 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.
Get-AuthenticodeSignature "script.ps1"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:\...`.
Set-AuthenticodeSignature -FilePath "script.ps1" -Certificate $certExibe 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.
Get-Acl "C:\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".
$acl = Get-Acl "C:\pasta"$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("Usuario","FullControl","Allow")$acl.SetAccessRule($accessRule)Set-Acl "C:\pasta" $aclExibe 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.
Get-Acl "arquivo.txt" | Format-ListTécnicas para automatizar tarefas repetitivas, agendar a execução de scripts e gerenciar jobs em segundo plano, otimizando a eficiência operacional.
Lista todas as tarefas agendadas configuradas no sistema operacional Windows, incluindo seu status, nome e horário da próxima execução.
Get-ScheduledTaskCria 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.
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."Inicia a execução de uma tarefa agendada manualmente, independentemente de seu gatilho programado.
Start-ScheduledTask -TaskName "MinhaTarefa"Desabilita uma tarefa agendada, impedindo que ela seja executada por seus gatilhos. A tarefa permanece no sistema, mas em estado inativo.
Disable-ScheduledTask -TaskName "MinhaTarefa"Remove permanentemente uma tarefa agendada do sistema. O parâmetro `-Confirm:$false` evita o prompt de confirmação.
Unregister-ScheduledTask -TaskName "MinhaTarefa" -Confirm:$falseInicia 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.
Start-Job -ScriptBlock { Get-Process } -Name "ProcessosJob"Lista todos os jobs em segundo plano que estão em execução ou foram concluídos na sessão atual do PowerShell.
Get-JobRecupera 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.
Receive-Job -Id 1Encerra um job em segundo plano que está em execução. Pode ser necessário usar `-Force` para jobs que não respondem.
Stop-Job -Id 1Remove um job em segundo plano da sessão atual do PowerShell. Isso libera os recursos associados ao job.
Remove-Job -Id 1Define 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.
workflow MeuWorkflow { parallel { Get-Process Get-Service } sequence { Write-Host "Concluído" }}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.
Consulta o WMI para obter informações detalhadas sobre o sistema operacional Windows, como versão, service pack, data de instalação e fabricante.
Get-WmiObject -Class Win32_OperatingSystemConsulta 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.
Get-WmiObject -Class Win32_ComputerSystemConsulta o WMI para obter detalhes sobre o(s) processador(es) do sistema, como fabricante, velocidade, número de núcleos e arquitetura.
Get-WmiObject -Class Win32_ProcessorConsulta 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.
Get-WmiObject -Class Win32_LogicalDiskCmdlet 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`.
Get-CimInstance -ClassName Win32_OperatingSystemExecuta uma consulta WQL (WMI Query Language) diretamente para filtrar objetos CIM. Este exemplo seleciona todos os processos com o nome "chrome.exe".
Get-CimInstance -Query "SELECT * FROM Win32_Process WHERE Name = 'chrome.exe'"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.
New-CimSession -ComputerName servidorExecuta uma consulta CIM em um computador remoto usando uma sessão CIM previamente estabelecida (`$session`). Este exemplo lista os serviços no servidor remoto.
Get-CimInstance -CimSession $session -ClassName Win32_ServiceRecupera os 10 eventos mais recentes do log de eventos do sistema. Útil para uma rápida verificação de eventos recentes.
Get-EventLog -LogName System -Newest 10Um 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).
Get-WinEvent -FilterHashtable @{LogName='Application'; Level=2}Obtém dados de contadores de desempenho do sistema. Este exemplo monitora o tempo de utilização total do processador em tempo real.
Get-Counter "\Processor(_Total)\% Processor Time"