Folha de referência PowerShell
Uma referência PowerShell pesquisável e imprimível — cmdlets, o pipeline, variáveis, ficheiros, ciclos, funções, objetos e administração. Grátis.
Obter ajuda e descoberta
12Get-Help Get-Process
Mostra ajuda para um cmdlet
Get-Help Get-Process -Examples
Mostra exemplos de uso de um cmdlet
Get-Help Get-Process -Full
Mostra a ajuda completa incluindo parâmetros
Get-Help about_Functions
Lê um tópico conceptual about_
Update-Help
Baixa os ficheiros de ajuda mais recentes
Get-Command -Noun Process
Lista cmdlets que atuam sobre um substantivo
Get-Command -Verb Get
Lista cmdlets que usam um dado verbo
Get-Command *service*
Pesquisa comandos por nome com wildcard
Get-Process | Get-Member
Lista as propriedades e métodos dos objetos
Get-Alias ls
Mostra a que comando um alias corresponde
Get-Alias -Definition Get-ChildItem
Lista todos os aliases de um cmdlet
$PSVersionTable
Mostra a versão e edição do PowerShell
Variáveis e tipos
13$x = 5
Atribui um valor a uma variável
[int]$n = '42'
Declara uma variável fortemente tipada
$null
O valor null/vazio
$true; $false
Literais booleanos
$arr = @(1, 2, 3)
Cria um array
$arr += 4
Acrescenta um elemento a um array
$arr[0]; $arr[-1]
Indexa o primeiro e último elementos do array
$hash = @{ Name = 'Ann'; Age = 30 }
Cria uma hashtable
$hash['Name']; $hash.Name
Lê um valor da hashtable por chave
$env:PATH
Lê uma variável de ambiente
$env:MY_VAR = 'value'
Define uma variável de ambiente para a sessão
Get-Variable
Lista todas as variáveis definidas
[math]::Round(3.14159, 2)
Chama um método estático .NET
Pipeline e filtragem
12Get-Process | Where-Object { $_.CPU -gt 10 }
Filtra objetos por uma condição
Get-Process | ? CPU -gt 10
Filtra com o alias ? e sintaxe simplificada
Get-Process | ForEach-Object { $_.Name }
Executa um bloco de script para cada objeto
Get-Process | % { $_.Kill() }
Itera com o alias %
Get-Process | Select-Object Name, Id
Mantém apenas propriedades específicas
Get-Process | Select-Object -First 5
Pega nos primeiros N objetos
Get-Process | Sort-Object CPU -Descending
Ordena objetos por uma propriedade
Get-Process | Group-Object Company
Agrupa objetos por uma propriedade
Get-Process | Measure-Object CPU -Sum
Agrega valores numéricos (soma, média)
Get-ChildItem | Select-Object -Unique
Retorna objetos distintos
1..5 | ForEach-Object { $_ * 2 }
Encaminha um intervalo por uma transformação
Get-Process | Out-GridView
Envia resultados para uma grelha interativa
Ficheiros e caminhos
13Get-ChildItem -Path C:\Logs
Lista itens num diretório (alias ls/dir)
Get-ChildItem -Recurse -Filter *.log
Lista ficheiros correspondentes recursivamente
Get-Content .\file.txt
Ler um arquivo linha por linha
Get-Content .\file.txt -Tail 20
Lê as últimas N linhas de um ficheiro
Set-Content .\file.txt -Value 'Hi'
Escreve (sobrescreve) texto num ficheiro
Add-Content .\file.txt -Value 'Hi'
Acrescenta texto a um ficheiro
Copy-Item a.txt b.txt
Copia um ficheiro ou diretório
Move-Item a.txt .\dir\
Move ou renomeia um item
Remove-Item a.txt -Force
Apaga um ficheiro ou diretório
New-Item -ItemType Directory -Path .\dir
Cria um novo ficheiro ou diretório
Test-Path .\file.txt
Verifica se um caminho existe
Get-Location
Mostra o diretório atual (alias pwd)
Set-Location C:\Temp
Muda o diretório atual (alias cd)
Strings e texto
12'Hello World' -match 'World'
Testa uma string contra um regex
'Hello' -replace 'l', 'L'
Substitui texto usando um regex
'a,b,c' -split ','
Divide uma string num array por regex
'a-b-c'.Split('-')
Divide usando o método .NET String
'a', 'b' -join ', '
Junta elementos de array numa string
Select-String -Path *.log -Pattern 'error'
Pesquisa estilo grep em ficheiros
'{0} of {1}' -f 3, 10
Formata uma string com placeholders
' hi '.Trim()
Remove espaços no início e fim
'Hello'.ToUpper()
Converte uma string em maiúsculas
'Hello'.Substring(0, 3)
Extrai uma substring por índice e comprimento
'Hello'.Contains('ell')
Testa se uma string contém texto
'Hello'.Length
Obtém o número de caracteres
Loops e condicionais
12if ($x -gt 0) { 'pos' } elseif ($x -eq 0) { 'zero' } else { 'neg' }
Ramifica com if / elseif / else
switch ($x) { 1 { 'one' } default { 'other' } }
Compara um valor contra casos
foreach ($i in $arr) { $i }
Itera sobre uma coleção
for ($i = 0; $i -lt 5; $i++) { $i }
Loop contado com um índice
while ($x -lt 10) { $x++ }
Loop enquanto uma condição for verdadeira
do { $x++ } while ($x -lt 10)
Loop pelo menos uma vez, depois testa
$x -eq 5; $x -ne 5
Comparações de igual e diferente
$x -gt 5; $x -lt 5
Comparações de maior e menor que
$x -ge 5; $x -le 5
Comparações de maior/menor ou igual
'abc' -like 'a*'
Comparação com wildcard
@(1, 2, 3) -contains 2
Testa pertença a um array
break; continue
Sai ou salta a iteração atual do loop
Funções e scripts
12function Get-Sum { param($a, $b) $a + $b }
Define uma função com parâmetros
Get-Sum -a 2 -b 3
Chama uma função com argumentos nomeados
function Test { param([int]$n = 1) }
Parâmetro tipado com valor padrão
param([Parameter(Mandatory)]$Name)
Exige que um parâmetro seja fornecido
return $value
Retorna um valor de uma função
function F { [CmdletBinding()] param() }
Cria uma função avançada (parâmetros comuns)
Write-Verbose 'msg' -Verbose
Emite um fluxo de mensagens detalhadas
Write-Output $result
Envia um objeto para o pipeline
Write-Error 'failed'
Escreve no fluxo de erro
.\script.ps1 -Arg value
Executa um ficheiro de script com argumentos
. .\functions.ps1
Faz dot-source de um script na sessão
try { } catch { $_ } finally { }
Trata erros terminantes
Objetos e propriedades
12Get-Process | Select-Object -ExpandProperty Name
Retorna valores brutos de propriedades, não objetos
(Get-Process).Name
Acede a uma propriedade em cada objeto
Get-Process | Select-Object Name, @{ Name = 'MB'; Expression = { $_.WS / 1MB } }
Adiciona uma propriedade calculada
[PSCustomObject]@{ Name = 'Ann'; Age = 30 }
Constrói um objeto personalizado
$obj | Add-Member -NotePropertyName Tag -NotePropertyValue 'x'
Anexa uma propriedade a um objeto
$obj.PSObject.Properties.Name
Lista os nomes de propriedades de um objeto
$obj | Format-Table -AutoSize
Mostra objetos como tabela alinhada
$obj | Format-List *
Mostra todas as propriedades como lista
$obj | ConvertTo-Json -Depth 5
Serializa um objeto para JSON
Get-Content data.json | ConvertFrom-Json
Analisa JSON em objetos
$obj | Export-Csv out.csv -NoTypeInformation
Exporta objetos para um ficheiro CSV
Import-Csv data.csv
Lê um ficheiro CSV em objetos
Processos e serviços
12Get-Process
Lista processos em execução (alias ps)
Get-Process -Name chrome
Obtém processos por nome
Stop-Process -Name notepad -Force
Termina um processo
Start-Process notepad.exe
Inicia um novo processo
Get-Service
Lista serviços do Windows
Get-Service -Name wuauserv
Obtém um serviço por nome
Start-Service -Name wuauserv
Inicia um serviço parado
Stop-Service -Name wuauserv
Para um serviço em execução
Restart-Service -Name wuauserv
Reinicia um serviço
Set-Service -Name wuauserv -StartupType Manual
Altera o modo de arranque de um serviço
Get-EventLog -LogName System -Newest 20
Lê entradas recentes do log de eventos clássico
Get-WinEvent -LogName Application -MaxEvents 20
Consulta logs de eventos modernos
Remoting e jobs
12Enter-PSSession -ComputerName Srv01
Inicia uma sessão remota interativa
Exit-PSSession
Sai de uma sessão remota interativa
Invoke-Command -ComputerName Srv01 -ScriptBlock { Get-Service }
Executa um comando num host remoto
$s = New-PSSession -ComputerName Srv01
Cria uma sessão remota persistente
Invoke-Command -Session $s -ScriptBlock { hostname }
Reutiliza uma sessão remota existente
Remove-PSSession $s
Fecha e remove uma sessão remota
Start-Job -ScriptBlock { Get-Process }
Executa um comando como job em segundo plano
Get-Job
Lista jobs em segundo plano e o seu estado
Receive-Job -Id 1 -Keep
Obtém a saída de um job
Wait-Job -Id 1
Bloqueia até um job terminar
Stop-Job -Id 1; Remove-Job -Id 1
Para e remove um job em segundo plano
Get-Process | Start-ThreadJob { $input }
Executa thread jobs leves no mesmo processo
Módulos e pacotes
12Get-Module
Lista os módulos atualmente carregados
Get-Module -ListAvailable
Lista todos os módulos instalados
Import-Module Pester
Carrega um módulo na sessão
Remove-Module Pester
Descarrega um módulo da sessão
Find-Module -Name PSReadLine
Pesquisa um módulo na galeria
Install-Module PSReadLine -Scope CurrentUser
Instala um módulo a partir da galeria
Update-Module PSReadLine
Atualiza um módulo instalado
Uninstall-Module PSReadLine
Remove um módulo instalado
Get-ExecutionPolicy
Mostra a política de execução de scripts atual
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Permite a execução de scripts assinados e locais
Get-PSRepository
Lista os repositórios de pacotes configurados
$PROFILE
Caminho para o script de perfil do utilizador atual
Nenhuma entrada corresponde a “:q”.
Precisa de ajuda?
Encontrou um problema com esta ferramenta? Avise a nossa equipa.