MaisTools
Guias/

PowerShell Cheat Sheet

Referência rápida de PowerShell: cmdlets, flags, exemplos e pipeline de objectos, organizados por secção e com pesquisa instantânea.

PowerShell Cheat Sheet

Cmdlets, pipeline de objectos e one-liners

Navegação

Get-ChildItem

Lista ficheiros e directórios. Alias ls, gci, dir. -Recurse percorre tudo, -Force inclui ocultos.

Flags-Recurse-Force-Filter-Include-Exclude-File-Directory-Depth
Exemplo
Get-ChildItem
Get-ChildItem -Recurse -Filter *.ts
Get-ChildItem -Force
gci -Directory
Set-Location

Muda o directório actual. Alias cd. Suporta - para o anterior e ~ para a home.

Flags-Path-LiteralPath-PassThru
Exemplo
Set-Location s:\MaisTools
cd ~
cd ..
Get-Location

Mostra o caminho actual. Alias pwd.

Exemplo
Get-Location
pwd
Test-Path

Verifica se um caminho existe. Devolve $true ou $false.

Flags-PathType-IsValid-NewerThan-OlderThan
Exemplo
Test-Path .\file.txt
Test-Path .\src -PathType Container
if (Test-Path .\dir) { 'existe' }
Push-Location / Pop-Location

Guarda o directório actual numa stack (Push) e regressa depois (Pop). Útil em scripts.

Flags-Path-StackName
Exemplo
Push-Location C:\Temp
# ...trabalho aqui...
Pop-Location
Resolve-Path

Resolve um caminho relativo para absoluto, ou faz o inverso com -Relative.

Flags-Relative-LiteralPath
Exemplo
Resolve-Path .\src
Resolve-Path -Relative C:\Temp\file.txt

Ficheiros

New-Item

Cria ficheiros, directórios ou symlinks. -ItemType define o tipo. -Force em ficheiro existente trunca o conteúdo.

Flags-ItemType-Path-Force-Value
Exemplo
New-Item -ItemType File novo.txt
New-Item -ItemType Directory -Force pasta\sub
New-Item -ItemType SymbolicLink -Path link -Target target
Copy-Item

Copia ficheiros ou directórios. -Recurse para árvores, -Force sobrescreve o destino.

Flags-Recurse-Force-Filter-Include-Exclude-Destination
Exemplo
Copy-Item a.txt b.txt
Copy-Item -Recurse src\ dest\
Copy-Item *.log -Destination archive\
Move-Item

Move ou renomeia ficheiros e directórios.

Flags-Force-Destination-Filter
Exemplo
Move-Item old.txt new.txt
Move-Item *.log archive\
Remove-Item

Apaga ficheiros ou directórios. -Recurse -Force apaga tudo sem confirmar (perigoso).

Flags-Recurse-Force-Filter-Include-Confirm
Exemplo
Remove-Item file.txt
Remove-Item -Recurse -Force node_modules
Remove-Item *.tmp
Rename-Item

Renomeia ficheiros. Aceita ScriptBlock no -NewName para renomear em massa.

Flags-NewName-Force
Exemplo
Rename-Item old.txt new.txt
Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace '\.txt$','.md' }
Get-Item

Obtém informação de um item (Length, LastWriteTime, etc). Não lê conteúdo, só metadados.

Flags-Force-Stream
Exemplo
Get-Item .\file.txt
(Get-Item file.txt).Length
Get-Item file.txt | Select-Object Name, Length, LastWriteTime

Conteúdo

Get-Content

Lê o conteúdo de um ficheiro. -TotalCount como head, -Tail como tail, -Wait segue como tail -f.

Flags-TotalCount-Tail-Wait-Raw-Encoding
Exemplo
Get-Content file.txt
Get-Content file.txt -TotalCount 10
Get-Content file.txt -Tail 20
Get-Content app.log -Wait -Tail 100
Set-Content

Escreve conteúdo num ficheiro, sobrescrevendo. -Encoding utf8 evita o default UTF-16 com BOM no PS 5.1.

Flags-Value-Encoding-Force-NoNewline
Exemplo
Set-Content out.txt 'linha'
'a','b','c' | Set-Content lista.txt -Encoding utf8
Add-Content

Acrescenta conteúdo a um ficheiro existente. Equivalente a >> em bash.

Flags-Value-Encoding
Exemplo
Add-Content log.txt 'nova entrada'
Get-Date | Add-Content log.txt
Out-File

Redireciona output para um ficheiro. -Append acrescenta, -Encoding controla a codificação.

Flags-FilePath-Append-Encoding-Width
Exemplo
Get-Process | Out-File processes.txt
Get-Service | Out-File -Append -Encoding utf8 services.log
Clear-Content

Esvazia o conteúdo de um ficheiro sem o apagar.

Flags-Path-Force
Exemplo
Clear-Content log.txt
Clear-Content *.tmp

Pipeline

Where-Object

Filtra objectos no pipeline por uma condição. Alias ? e where. Suporta sintaxe abreviada Propriedade -op Valor.

Flags-FilterScript-Property
Exemplo
Get-Process | Where-Object { $_.CPU -gt 10 }
Get-Service | Where-Object Status -eq Running
gci | ? { $_.Length -gt 1MB }
Sort-Object

Ordena objectos por propriedade. -Descending inverte, -Unique remove duplicados.

Flags-Property-Descending-Unique
Exemplo
Get-Process | Sort-Object CPU -Descending
Get-ChildItem | Sort-Object Length -Descending
'b','a','c' | Sort-Object
Select-Object

Selecciona N objectos do pipeline ou propriedades de cada objecto. -ExpandProperty extrai o valor.

Flags-First-Last-Skip-Property-ExpandProperty-Unique
Exemplo
Get-Process | Select-Object -First 5
Get-Process | Select-Object Name, CPU, WS
Get-Service | Select-Object -ExpandProperty Name
ForEach-Object

Itera o pipeline aplicando um bloco a cada objecto. Alias % e foreach. -Parallel corre em paralelo (PS 7+).

Flags-Process-Begin-End-Parallel
Exemplo
Get-ChildItem | ForEach-Object { $_.Name.ToUpper() }
1..5 | %{ $_ * 2 }
$urls | ForEach-Object -Parallel { Invoke-WebRequest $_ }
Measure-Object

Conta, soma, calcula média, máximo ou mínimo de uma colecção. -Line, -Word, -Character para texto.

Flags-Property-Sum-Average-Maximum-Minimum-Line-Word-Character
Exemplo
Get-Process | Measure-Object -Property WS -Sum -Average
Get-Content file.txt | Measure-Object -Line
Get-ChildItem | Measure-Object
Group-Object

Agrupa objectos por propriedade. Útil para contar ocorrências ou construir dicionários com -AsHashTable.

Flags-Property-NoElement-AsHashTable
Exemplo
Get-Process | Group-Object ProcessName
Get-ChildItem | Group-Object Extension -NoElement

Pesquisa

Select-String

Procura padrões em strings ou ficheiros. Equivalente a grep. -Pattern aceita regex, -SimpleMatch desliga regex.

Flags-Pattern-Path-Recurse-CaseSensitive-NotMatch-Context-SimpleMatch
Exemplo
Select-String 'TODO' *.ts
Select-String -Path src\*.ts -Pattern 'error' -CaseSensitive
Get-ChildItem -Recurse | Select-String 'API_KEY'
Get-Command

Mostra cmdlets disponíveis com filtros por nome, módulo ou tipo. (Get-Command npm).Source devolve o caminho.

Flags-Name-Module-CommandType-All
Exemplo
Get-Command npm
Get-Command *process*
(Get-Command npm).Source
Get-Command -Module Microsoft.PowerShell.Utility
Get-Member

Mostra propriedades e métodos de um objecto. Indispensável para descobrir o que se pode fazer com um tipo.

Flags-MemberType-Static-Name
Exemplo
Get-Process | Get-Member
(Get-Date) | Get-Member -MemberType Method
'abc' | Get-Member
Get-Help

Mostra ajuda de cmdlets ou tópicos about_*. -Examples mostra exemplos, -Online abre a versão web.

Flags-Full-Examples-Online-Detailed-Parameter
Exemplo
Get-Help Get-ChildItem
Get-Help Get-Process -Examples
Get-Help about_Variables
Get-Help Set-Content -Online

Variáveis

$variável

Variáveis começam por $ e não precisam de declaração. Suportam arrays (@()) e hashtables (@{}).

Exemplo
$nome = 'Bruno'
$idade = 30
$lista = @(1, 2, 3)
$hash = @{ a = 1; b = 2 }
$env:

Acede e define variáveis de ambiente. Get-ChildItem env: lista todas. Alteração vale só na sessão actual.

Exemplo
$env:PATH
$env:USERPROFILE
$env:DEBUG = 'true'
Get-ChildItem env:
$null

Valor nulo. Em comparações coloca $null à esquerda ($null -eq $x) para evitar surpresas com arrays.

Exemplo
if ($null -eq $var) { 'vazio' }
$lista = @($null, 1, 2)
[string]::IsNullOrEmpty($x)
[tipo]

Conversão de tipos com [tipo]. Funciona para int, string, datetime, arrays tipados, regex.

Exemplo
[int]'42'
[datetime]'2026-01-15'
[int[]]$nums = 1,2,3
[regex]::Escape($pattern)
$global: / $script: / $local:

Define o âmbito de uma variável: global (toda a sessão), script (só este ficheiro) ou local (esta função).

Exemplo
$global:config = @{}
$script:contador = 0
function f { $local:tmp = 1 }

Strings

"$var" interpolação

Aspas duplas expandem $var e $(expr). Aspas simples são literais e não expandem nada.

Exemplo
$nome = "Bruno"
"Olá $nome"
"Caminho: $($obj.Property)"
'literal $nome'  # sem expansão
@"..."@ / @'...'@

Strings multilinha (here-strings). @"..."@ expande variáveis, @'...'@ é literal. O fecho tem de estar na coluna 0.

Exemplo
@"
linha 1 com $nome
linha 2
"@

@'
literal $nome
'@
-f (formatar)

Operador de formatação tipo printf. Suporta números, datas e alinhamento ({0,5:N2}).

Exemplo
'{0} tem {1} anos' -f $nome, $idade
'{0:N2}' -f 1234.5678  # 1,234.57
'{0:yyyy-MM-dd}' -f (Get-Date)
-replace / -split / -join

Operações sobre strings: -replace usa regex, -split separa em array, -join junta um array numa string.

Exemplo
'abc123' -replace '\d', 'X'
'a,b,c' -split ','
@('a','b','c') -join ', '

Controlo

if / elseif / else

Estrutura condicional. Usa operadores PowerShell (-eq, -lt) em vez de == ou <.

Exemplo
if (Test-Path .\file) {
  'existe'
} elseif ($x -gt 0) {
  'positivo'
} else {
  'outro'
}
switch

Alternativa ao if encadeado. -Regex e -Wildcard activam padrões, -File lê linhas de um ficheiro.

Flags-Regex-Wildcard-CaseSensitive-File
Exemplo
switch ($x) {
  1 { 'um' }
  2 { 'dois' }
  default { 'outro' }
}

switch -Regex ($texto) {
  '^\d+$' { 'número' }
}
foreach / for / while

Loops sobre colecções (foreach), com contador (for), enquanto condição (while), ou pelo menos uma vez (do/while).

Exemplo
foreach ($f in Get-ChildItem) { $f.Name }
for ($i = 0; $i -lt 5; $i++) { $i }
while ($cond) { ... }
do { ... } while ($cond)
try / catch / finally

Captura de erros. Para apanhar erros não terminantes usa -ErrorAction Stop no cmdlet.

Exemplo
try {
  Cmdlet -ErrorAction Stop
} catch [System.IO.IOException] {
  Write-Error "IO: $_"
} catch {
  Write-Error $_
} finally {
  Cleanup
}
break / continue / return

break sai do loop, continue salta para a iteração seguinte, return sai da função.

Exemplo
foreach ($x in 1..10) {
  if ($x -eq 5) { break }
  if ($x % 2 -eq 0) { continue }
  $x
}

Operadores

-eq -ne -lt -gt -le -ge

Operadores de comparação. Não existe == em PowerShell, usa sempre -eq, -ne, -lt, -gt, -le, -ge.

Exemplo
$x -eq 5     # igual
$x -ne 5     # diferente
$x -lt 10    # menor
$x -gt 0     # maior
$x -le 10    # menor ou igual
$x -ge 0     # maior ou igual
-like / -match / -contains / -in

Outros operadores: -like usa wildcards, -match usa regex, -contains testa pertença num array, -in é o inverso.

Exemplo
'file.txt' -like '*.txt'         # wildcards
'abc123' -match '\d+'             # regex
@(1,2,3) -contains 2              # pertença
2 -in @(1,2,3)                   # pertença (invertido)
-and / -or / -not / -xor

Operadores lógicos. -and, -or, -not, -xor. ! é alias de -not.

Exemplo
($x -gt 0) -and ($x -lt 10)
($a -eq 1) -or ($b -eq 2)
-not (Test-Path .\file)
!$cond

Processos

Get-Process

Lista processos com propriedades (CPU, WS, Id, ProcessName). Sem argumentos lista todos.

Flags-Name-Id-IncludeUserName-Module
Exemplo
Get-Process
Get-Process node, chrome
Get-Process -Id 1234
Stop-Process

Termina processos por nome ou Id. -Force evita confirmação. Pode receber objectos pelo pipeline.

Flags-Name-Id-Force-PassThru
Exemplo
Stop-Process -Name node
Stop-Process -Id 1234 -Force
Get-Process node | Stop-Process
Start-Process

Inicia um programa. -Wait bloqueia até terminar, -NoNewWindow corre na consola actual, -Verb RunAs eleva.

Flags-FilePath-ArgumentList-WorkingDirectory-Wait-NoNewWindow-Verb
Exemplo
Start-Process notepad
Start-Process npm -ArgumentList 'run','dev'
Start-Process pwsh -Verb RunAs
Wait-Process

Espera que um processo termine. -Timeout aborta após N segundos.

Flags-Name-Id-Timeout
Exemplo
Wait-Process -Name node
Wait-Process -Id 1234 -Timeout 30
& (operador de chamada)

Executa um comando ou script. Necessário quando o caminho tem espaços ou para chamar executáveis dinamicamente.

Exemplo
& 'C:\Program Files\App\app.exe' arg1 arg2
& $cmd
& { Get-Process; Get-Service }

Dados

ConvertFrom-Json

Converte JSON em objectos PowerShell. -AsHashtable devolve hashtable (PS 6+) em vez de PSCustomObject.

Flags-AsHashtable-Depth-NoEnumerate
Exemplo
Get-Content pkg.json | ConvertFrom-Json
'{"a":1}' | ConvertFrom-Json
$obj.dependencies
ConvertTo-Json

Converte objectos PowerShell em JSON. -Depth controla a profundidade (default 2, geralmente baixo demais).

Flags-Depth-Compress-AsArray
Exemplo
$obj | ConvertTo-Json -Depth 10
@{a=1; b=2} | ConvertTo-Json -Compress
Get-Process | Select-Object Name,Id | ConvertTo-Json
Import-Csv

Lê um CSV para objectos com propriedades. -Delimiter para ; ou outros, -Header se o ficheiro não tiver cabeçalho.

Flags-Path-Delimiter-Header-Encoding
Exemplo
Import-Csv users.csv
Import-Csv data.csv -Delimiter ';' -Encoding utf8
Export-Csv

Exporta objectos para CSV. -NoTypeInformation remove a linha de tipo no topo (default em PS 6+).

Flags-Path-Delimiter-NoTypeInformation-Append-Encoding
Exemplo
Get-Process | Export-Csv processes.csv -NoTypeInformation
$data | Export-Csv out.csv -Encoding utf8 -Delimiter ';'

Rede

Invoke-WebRequest

Cliente HTTP completo. Devolve a resposta como objecto com .Content, .StatusCode, .Headers. Alias iwr.

Flags-Uri-Method-Headers-Body-OutFile-UseBasicParsing
Exemplo
Invoke-WebRequest https://example.com
iwr https://api.example.com -OutFile data.json
iwr -Uri $url -Method POST -Body $body
Invoke-RestMethod

Cliente HTTP que parseia automaticamente JSON ou XML para objectos. Mais usado para APIs REST. Alias irm.

Flags-Uri-Method-Headers-Body-ContentType
Exemplo
Invoke-RestMethod https://api.github.com/users/octocat
irm $url -Method POST -Body ($obj | ConvertTo-Json) -ContentType 'application/json'
Test-NetConnection

Testa conectividade TCP a um host e porta. Só existe no Windows. Em Linux/macOS usa Test-Connection -TcpPort (PS 7+).

Flags-ComputerName-Port-TraceRoute-CommonTCPPort
Exemplo
Test-NetConnection google.com -Port 443
Test-NetConnection -ComputerName 8.8.8.8 -TraceRoute
Test-Connection

Equivalente a ping. -Count limita pacotes, -Quiet devolve só $true ou $false.

Flags-ComputerName-Count-Quiet-Delay
Exemplo
Test-Connection google.com -Count 4
Test-Connection 8.8.8.8 -Quiet  # bool

Módulos

Get-Module

Lista módulos. -ListAvailable mostra todos os instalados, não só os carregados.

Flags-ListAvailable-Name-All
Exemplo
Get-Module
Get-Module -ListAvailable
Get-Module -Name Pester
Import-Module

Carrega um módulo na sessão actual. -Force recarrega se já estiver importado.

Flags-Name-Force-Prefix-Function
Exemplo
Import-Module Pester
Import-Module .\MeuModulo.psm1 -Force
Install-Module

Instala módulos da PowerShell Gallery. -Scope CurrentUser evita pedir permissões de admin.

Flags-Name-Scope-Force-AllowClobber-RequiredVersion
Exemplo
Install-Module Pester -Scope CurrentUser
Install-Module Az -Force -AllowClobber
Find-Module

Procura módulos disponíveis na PowerShell Gallery.

Flags-Name-Tag-Filter
Exemplo
Find-Module Az*
Find-Module -Tag azure

Avançado

Start-Job / Receive-Job

Corre código em background. Receive-Job recolhe os resultados, -Wait bloqueia até estar pronto.

Flags-ScriptBlock-Name-ArgumentList
Exemplo
$j = Start-Job { Get-Process }
Receive-Job $j -Wait -AutoRemoveJob
Get-Job | Remove-Job
Start-ThreadJob

Background jobs leves baseados em threads (mais rápidos que Start-Job). Embutido em PS 7+, em 5.1 instala com Install-Module ThreadJob.

Flags-ScriptBlock-ThrottleLimit-StreamingHost
Exemplo
$j = Start-ThreadJob { 1..10 | %{ $_ * 2 } }
$urls | ForEach-Object -Parallel { iwr $_ } -ThrottleLimit 5
Measure-Command

Mede o tempo de execução de um bloco. Devolve TimeSpan com TotalSeconds, TotalMilliseconds, etc.

Flags-Expression
Exemplo
Measure-Command { Get-ChildItem -Recurse }
(Measure-Command { ./script.ps1 }).TotalSeconds
Invoke-Command

Corre comandos numa máquina remota via WinRM. Suporta sessões persistentes com -Session.

Flags-ComputerName-ScriptBlock-Session-Credential-AsJob
Exemplo
Invoke-Command -ComputerName server01 -ScriptBlock { Get-Service }
Invoke-Command -Session $s -ScriptBlock { hostname }
Start-Sleep

Pausa a execução por N segundos ou milissegundos.

Flags-Seconds-Milliseconds
Exemplo
Start-Sleep -Seconds 5
Start-Sleep -Milliseconds 250

Referência

Pipeline de objectos

Ao contrário de bash, o pipeline em PowerShell transporta objectos com propriedades e métodos. Cada cmdlet pode aceder directamente a .Length, .Name, .CPU sem parsear texto.

Exemplo
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
# objectos fluem entre comandos com propriedades preservadas

Get-ChildItem | Where-Object Length -gt 1MB
# Each item retains its full type — pode aceder a .Length, .Name, etc.

Get-Service | Group-Object Status | Format-Table Name, Count
Codificação de ficheiros

A codificação por defeito mudou entre as versões. Saber qual está activa evita BOMs e caracteres trocados em scripts e logs partilhados com outras ferramentas.

PowerShell 5.1
  • Default varia por cmdlet: Out-File usa UTF-16 LE com BOM, Set-Content usa Default (ANSI/Windows-1252).
  • Nenhum produz UTF-8 sem -Encoding. Passa sempre -Encoding utf8 para ficheiros partilhados com ferramentas Unix.
PowerShell 7+
  • Default: UTF-8 sem BOM.
  • Comportamento alinhado com o ecossistema. Em ambos, -Encoding utf8 garante UTF-8.
Exemplo
Set-Content file.txt 'texto' -Encoding utf8
Out-File log.txt -Encoding utf8 -InputObject $data
[System.IO.File]::WriteAllText('file.txt', 'texto', [System.Text.UTF8Encoding]::new($false))
Erros e exit codes

PowerShell distingue erros terminantes de não terminantes. Cmdlets falham silenciosamente por defeito, usa -ErrorAction Stop para forçar try/catch a apanhá-los.

-ErrorAction
  • Continuecomportamento padrão, mostra erro e continua.
  • Stoptransforma em erro terminante (captável).
  • SilentlyContinueesconde o erro mas $? fica $false.
  • Ignoreesconde e não regista em $Error.
Estado
  • $?$true se o último comando teve sucesso.
  • $LASTEXITCODEexit code do último executável nativo.
  • $Error[0]objecto do último erro registado.
Exemplo
try {
  Get-Item .\file -ErrorAction Stop
} catch [System.IO.FileNotFoundException] {
  Write-Warning "ficheiro não encontrado"
} catch {
  Write-Error $_.Exception.Message
}

# verificar saída de processo nativo
git status
if ($LASTEXITCODE -ne 0) { throw "git falhou" }
Diferenças entre 5.1 e 7+

Windows PowerShell 5.1 (powershell.exe) e PowerShell 7+ (pwsh.exe) têm sintaxe e features diferentes. Estes pormenores partem scripts ao passar de uma versão para a outra.

  • A && B / A || BOs operadores && e || só existem em PS 7+. Em 5.1 usa: A; if ($?) { B }
  • $x ? a : bO operador ternário ?: só existe em PS 7+. Em 5.1 usa if/else.
  • $x ?? yO operador null-coalescing ?? só existe em PS 7+.
  • ConvertFrom-Json -AsHashtableConvertFrom-Json -AsHashtable só existe em PS 6+.
  • ForEach-Object -ParallelForEach-Object -Parallel só existe em PS 7+.
20 one-liners essenciais

Combinações frequentes para automação e administração. Cada uma resolve uma tarefa específica num único pipeline.

  • 01.Encontra ficheiros maiores que 100MB recursivamente.
    Get-ChildItem -Recurse -File | Where-Object Length -gt 100MB
  • 02.Lista os 10 ficheiros maiores no directório actual.
    Get-ChildItem | Sort-Object Length -Descending | Select-Object -First 10
  • 03.Mostra os 10 processos que mais memória consomem.
    Get-Process | Sort-Object WS -Descending | Select-Object -First 10
  • 04.Mostra os 10 processos que mais CPU consomem.
    Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
  • 05.Conta o número total de ficheiros recursivamente.
    Get-ChildItem -Recurse -File | Measure-Object | Select-Object -ExpandProperty Count
  • 06.Apaga todos os ficheiros .tmp recursivamente.
    Get-ChildItem -Recurse -Filter *.tmp | Remove-Item
  • 07.Pesquisa TODO em todos os ficheiros TypeScript.
    Get-ChildItem -Recurse -File | Where-Object Extension -in '.ts','.tsx' | Select-String 'TODO'
  • 08.Obtém o IP público externo da máquina actual.
    (Invoke-WebRequest ifconfig.me -UseBasicParsing).Content.Trim()
  • 09.Lista portas TCP em escuta com o processo associado.
    Get-NetTCPConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess
  • 10.Acompanha um log ao vivo começando pelas últimas 100 linhas.
    Get-Content app.log -Wait -Tail 100
  • 11.Obtém data e hora actuais num formato pronto para nomes de ficheiro.
    Get-Date -Format 'yyyy-MM-dd_HH-mm-ss'
  • 12.Cria um backup zip com a data no nome do ficheiro.
    Compress-Archive -Path .\src -DestinationPath "backup-$(Get-Date -Format yyyy-MM-dd).zip"
  • 13.Formata e imprime JSON expandido para máxima legibilidade.
    Get-Content data.json | ConvertFrom-Json | ConvertTo-Json -Depth 10
  • 14.Lista todas as variáveis de ambiente ordenadas por nome.
    Get-ChildItem env: | Sort-Object Name
  • 15.Lista todos os serviços actualmente em execução.
    Get-Service | Where-Object Status -eq 'Running'
  • 16.Testa se uma porta TCP está aberta num host remoto.
    Test-NetConnection google.com -Port 443
  • 17.Mostra o espaço livre em cada disco do sistema.
    Get-Volume | Select-Object DriveLetter, SizeRemaining, Size
  • 18.Mostra os últimos 20 comandos do histórico da sessão.
    Get-History | Select-Object -Last 20
  • 19.Mostra o caminho completo de um comando (equivalente a which).
    (Get-Command npm).Source
  • 20.Lista ficheiros modificados nos últimos 7 dias.
    Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) }