POWERSHELL 7 — CROSS-PLATFORM PS> PowerShell 7.x .NET 8+ | Open Source | MIT License pwsh — Pipeline Parallelization Windows Win 10/11, Server 2019+ winget install pwsh Linux Ubuntu, RHEL, Debian apt install powershell macOS macOS 12+ (ARM/x64) brew install powershell One scripting language across all major operating systems

O PowerShell tem sido a espinha dorsal da administração Windows por mais de uma década. Com o lançamento do PowerShell 7 (e sua evolução contínua nas versões 7.x), a Microsoft mudou fundamentalmente a direção desta ferramenta crítica — tornando-a cross-platform, open-source e repleta de recursos modernos de linguagem que melhoram dramaticamente a produtividade em scripting.

Se você ainda está usando o Windows PowerShell 5.1, este guia vai guiá-lo por tudo o que há de novo, por que você deveria atualizar e como migrar seus scripts existentes com confiança.

PowerShell 5.1 vs PowerShell 7: Comparação Lado a Lado

RecursoWindows PowerShell 5.1PowerShell 7.x
Runtime.NET Framework 4.x.NET 8+ (.NET moderno)
PlataformasApenas WindowsWindows, Linux, macOS
Open SourceNãoSim (Licença MIT)
Executávelpowershell.exepwsh.exe / pwsh
Operador TernárioNão suportadocondição ? true : false
Null-CoalescingNão suportado$x ?? 'padrão'
Chain de PipelineNão suportadocmd1 && cmd2
ForEach -ParallelNão suportadoProcessamento paralelo integrado
SSH RemotingApenas WinRMSSH e WinRM
Instalação Side-by-SideVem com o WindowsInstala ao lado do 5.1
Suporte de Longo PrazoEm modo de manutençãoDesenvolvimento ativo

Ponto Chave: O Windows PowerShell 5.1 não vai desaparecer — ele vem com o Windows e continuará recebendo correções de segurança. No entanto, todo desenvolvimento de novos recursos acontece exclusivamente no PowerShell 7.x.

Por Que Atualizar para o PowerShell 7?

Administração Cross-Platform

O PowerShell 7 roda nativamente em Windows, Linux e macOS. Isso significa que você pode usar os mesmos scripts, os mesmos módulos e os mesmos fluxos de automação em toda a sua infraestrutura.

Recursos Modernos de Linguagem

O PowerShell 7 introduz melhorias de sintaxe que os desenvolvedores vêm pedindo há anos: operadores ternários, null-coalescing, operadores de chain de pipeline e mais.

Melhorias de Performance

Construído sobre .NET moderno (8+), o PowerShell 7 entrega performance significativamente melhor que o 5.1 para a maioria das cargas de trabalho. O recurso ForEach-Object -Parallel sozinho pode reduzir o tempo de execução em ordens de magnitude para operações em massa.

Instalando o PowerShell 7

Windows

winget install --id Microsoft.PowerShell --source winget

Linux (Ubuntu/Debian)

sudo apt-get update
sudo apt-get install -y wget apt-transport-https software-properties-common
wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y powershell
pwsh

macOS

brew install powershell/tap/powershell
pwsh

Novos Recursos de Sintaxe

Operador Ternário

# Forma do PowerShell 5.1
if ($service.Status -eq 'Running') {
    $statusText = 'Saudável'
} else {
    $statusText = 'Inativo'
}

# Operador ternário do PowerShell 7
$statusText = ($service.Status -eq 'Running') ? 'Saudável' : 'Inativo'

Operadores Null-Coalescing

# Fornecer um valor padrão se $config for null
$serverName = $config.ServerName ?? 'localhost'

# Atribuir apenas se $logPath for atualmente null
$logPath ??= 'C:\Logs\default.log'

ForEach-Object -Parallel

# Fazer ping em 100 servidores em paralelo (até 10 por vez)
$servers = Get-Content -Path 'C:\servers.txt'
$servers | ForEach-Object -Parallel {
    $result = Test-Connection -ComputerName $_ -Count 1 -Quiet
    [PSCustomObject]@{
        Server = $_
        Online = $result
    }
} -ThrottleLimit 10

Checklist de Migração: Do PowerShell 5.1 para o 7

Fase de Avaliação

  • Inventariar todos os scripts, tarefas agendadas e fluxos de automação usando PowerShell 5.1
  • Identificar quais módulos cada script depende
  • Verificar compatibilidade de módulos usando Get-Module -ListAvailable no PowerShell 7
  • Testar cada script no PowerShell 7 em um ambiente de não-produção

Correções de Compatibilidade

  • Substituir uso de $PSScriptRoot se os scripts dependem de comportamento específico do 5.1
  • Atualizar configurações de -OutputEncoding (PowerShell 7 usa UTF-8 por padrão)
  • Revisar mudanças de comportamento na comparação de strings
  • Adicionar flag -UseWindowsPowerShell para módulos que precisam da camada de compatibilidade

Implantação

  • Instalar PowerShell 7 em todas as máquinas alvo
  • Atualizar tarefas agendadas para usar pwsh.exe em vez de powershell.exe
  • Atualizar pipelines CI/CD para referenciar pwsh
  • Configurar SSH remoting em servidores que precisam de gerenciamento remoto

Conclusão

O PowerShell 7 representa um grande salto para administradores Windows. A combinação de suporte cross-platform, recursos modernos de sintaxe como operadores ternários e null-coalescing, processamento paralelo de pipeline e SSH remoting fazem dele uma atualização essencial para qualquer pessoa séria sobre automação de infraestrutura.

O modelo de instalação side-by-side significa que não há risco em experimentar — seus scripts existentes do PowerShell 5.1 continuarão funcionando exatamente como antes enquanto você migra gradualmente para o PowerShell 7.