Verifique, Atualize e Escolha uma Versão do PowerShell
Oct 23, 2024
O PowerShell evoluiu do exclusivo para Windows (5.1) para o PowerShell 7 multiplataforma, construído em .NET para Windows, macOS e Linux. Conhecer a sua versão é essencial para compatibilidade, segurança e acesso a recursos modernos como processamento paralelo. Verifique a sua versão com $PSVersionTable.PSVersion ou consultas no registro. O Windows PowerShell 5.1 permanece pré-instalado, mas o PowerShell 7 deve ser instalado manualmente via Microsoft Store, Winget ou MSI. Executar ambos lado a lado ajuda a manter fluxos de trabalho legados e modernos.
Você pode querer saber a versão do PowerShell instalada em sua máquina. Enquanto usuários iniciantes podem ir até Programas no Painel de Controle para verificar a versão do PowerShell, muitas vezes é uma decepção quando eles não encontram o PowerShell listado como um programa lá. Em vez disso, você precisará recorrer a outros métodos para encontrar a versão do PowerShell.
Este artigo oferece um guia completo para verificar a versão do PowerShell que você está executando.
Tutorial de Scripting do Windows PowerShell (PDF) para Iniciantes
Saiba maisIntrodução às Versões do PowerShell
O PowerShell evoluiu de uma ferramenta de gerenciamento do Windows para um shell versátil que pode ser usado em diferentes plataformas. Em particular, o PowerShell Core 6.x e o PowerShell 7.x transformaram-no em uma poderosa estrutura de automação e script multiplataforma.
Evolução das Versões do PowerShell de 1.0 a 7.x
Em 2006, a Microsoft lançou o PowerShell 1.0 como parte do framework .NET para o sistema operacional Windows, incluindo Windows XP (SP2), Windows Server 2003 (r2 SP1) e Windows Vista. Ele introduziu cmdlets como Get-Process e Get-Service e foi projetado para automatizar tarefas em ambientes Windows.
Versão | Descrição |
|---|---|
|
PowerShell 2.0 |
O PowerShell 2.0 foi lançado em 2009. Entre outras coisas, introduziu o remoting (via WinRM) para executar comandos em máquinas remotas e a aplicação Integrated Scripting Environment (ISE). |
|
PowerShell 3.0 |
PowerShell 3.0, lançado em 2012, introduziu fluxos de trabalho, novos cmdlets e trabalhos agendados para automação de tarefas. |
|
PowerShell 4.0 |
PowerShell 4.0 (2013), 5.0 (2016) e 5.1 (2016) tiveram melhorias em cmdlets, desempenho e DSC. Classes e Enums foram adicionados à linguagem de script. Com o PowerShell 5.1, houve uma mudança em direção ao código aberto e ao PowerShell Core. |
|
PowerShell Core 6.x |
Então o PowerShell Core 6.x (2018) foi disponibilizado em código aberto e transferido para o GitHub. Era multiplataforma, funcionando em Windows, macOS e Linux. Não só isso, mas também foi desenvolvido para ambientes heterogêneos e a nuvem híbrida. |
|
PowerShell 7.x |
PowerShell 7.x (2020) é a versão mais recente. Unifica o Windows PowerShell e o PowerShell Core em um único fluxo de versão, suporta paralelização de pipeline e melhora o tratamento de erros, entre outras coisas. |
Por que identificar a versão correta do PowerShell
Before you use PowerShell for your everyday tasks, one question you may ask is, what version of PowerShell do I have? Having an answer to this question is important because your PowerShell version determines what cmdlets and functions you can use. For this and many other reasons, you must identify which PowerShell version you need to manage your tasks.
- Compatibilidade. Alguns scripts ou módulos exigem cmdlets específicos ou recursos disponíveis apenas nas versões mais recentes do PowerShell. Versões modernas do PowerShell suportam scripts antigos, mas com avisos de descontinuação para recursos desatualizados.
- Precisão nos Resultados. Algumas versões do PowerShell podem não fornecer os resultados precisos que você está procurando, como quando você precisa atender a um requisito específico ou pré-requisito para executar um comando ou carregar um módulo.
- Suporte Multiplataforma. Para Linux ou macOS, você precisa do PowerShell Core ou PowerShell 7.x.
- Recursos avançados. Versões mais antigas não suportam os recursos mais recentes, como paralelismo de pipeline, ?? (operador de coalescência nula) e ForEach-Object -Parallel, que estão disponíveis no PowerShell 7.x.
- Integração com a nuvem e DevOps. Versões recentes do PowerShell oferecem capacidades de integração aprimoradas com plataformas de nuvem, como Azure, AWS, ferramentas de DevOps e pipelines de CI/CD, facilitando a gestão baseada na nuvem.
- Requisitos de Segurança. As versões mais recentes do PowerShell são recomendadas por motivos de segurança e conformidade.
- Configuração do Ambiente. Para utilizar ferramentas ou automações em todo o ambiente, conhecer a versão ajuda a garantir a compatibilidade entre os sistemas.
Outros conteúdos de PowerShell que você pode gostar:
Diferenças entre Windows PowerShell e PowerShell Core
As principais diferenças entre Windows PowerShell e PowerShell Core são:
Recurso | Windows PowerShell | PowerShell Core |
|---|---|---|
|
Platform |
Apenas para Windows |
Multiplataforma (Windows, macOS, Linux) |
|
Versão |
Última versão principal: 5.1 |
Lançamentos contínuos (7.x e além) |
|
Framework |
Baseado no .NET Framework |
Baseado em .NET Core (agora .NET) |
|
Modelo de Lançamento |
Apenas correções de bugs/segurança |
Desenvolvimento ativo com novos recursos |
|
Instalação |
Vem pré-instalado com o sistema operacional Windows |
Deve ser baixado separadamente do GitHub ou gerenciadores de pacotes |
|
Compatibilidade com versões anteriores |
Integração estreita com Windows (por exemplo, WMI, COM) |
Pode ter recursos limitados específicos para Windows |
|
Desempenho |
Mais rápido em alguns cenários nativos do Windows |
Melhor desempenho em múltiplas plataformas |
|
Compatibilidade de Módulo |
Suporta muitos módulos legados |
Alguns módulos mais antigos podem não ser compatíveis |
|
Suporte a Nuvem/Contêiner |
Suporte limitado para contêineres e ambientes em nuvem |
Melhor suporte para containers e cloud |
|
Código Aberto |
Proprietário |
Código aberto (licença MIT) |
Se você usa recursos ou módulos específicos do Windows legado, o Windows PowerShell é uma escolha melhor. Mas para desenvolvimento multiplataforma e fluxos de trabalho baseados em nuvem, o PowerShell Core é o mais indicado.
Como verificar a versão do PowerShell
Saber a versão instalada do PowerShell é importante por várias razões práticas, pois sua versão determina quais cmdlets e funções estão disponíveis para uso. Versões diferentes podem oferecer suporte variado para diferentes scripts, módulos e plataformas. Para operações suaves do PowerShell, você deve conhecer a versão do PowerShell que está usando, suas limitações e suas características principais.
Verificar a versão do PowerShell é uma tarefa simples. A maneira mais fácil de verificar a versão do PowerShell é através do próprio PowerShell. Você pode exibir a versão do PowerShell que está utilizando, por exemplo, através do PSVersionTable.PSVersion ou do cmdlet Get-Host.
Comando da Versão do PowerShell: $PSVersionTable.PSVersion
Este é o método mais confiável para obter a versão do seu PowerShell, pois retorna informações especificamente sobre a versão do motor do PowerShell.
$PSVersionTable.PSVersion
Este cmdlet exibe a versão principal, secundária e de compilação (patch) do PowerShell instalado. O número da revisão é exibido, se aplicável.
Se você deseja visualizar mais detalhes além da versão, experimente o seguinte cmdlet:
$PSVersionTable
$PSVersionTable mostra várias propriedades específicas do ambiente além da versão.
- PSVersion – Mostra a versão do PowerShell
- PSEdition – Indica se é Desktop (Windows PowerShell) ou Core (PowerShell Core / PowerShell 7+)
- WSManStackVersion – Mostra a versão do WS-Management (usado para acesso remoto)
- PSRemotingProtocolVersion – Versão do protocolo de remoting
- SerializationVersion – Usado para manter a compatibilidade com versões anteriores para sessões remotas
Como obter a versão do PowerShell com o comando Get-Host
Um host é um programa que hospeda o motor do PowerShell. E você pode ter um host com uma versão independente do PowerShell.
O seguinte cmdlet exibe a versão do PowerShell que você está executando, mas essa versão pode ser imprecisa, pois reflete a versão do host, não a do motor.
Get-Host
Muitas vezes, a versão do PowerShell corresponde à do host. Além da versão do host, este cmdlet também exibe o nome do host, a cultura atual e a cultura da interface.
O comando Get-Host não funciona remotamente e sempre retorna a versão 1.0.0.0.
Comandos $Host e $Host.Version
$host é uma variável automática que exibe as mesmas informações que o cmdlet Get-Host.
$host
Se você está procurando pela versão do PowerShell, $host não é recomendado pelos mesmos motivos que Get-Host. O mesmo vale para $host.Version.
$host.Version
Ele exibe a versão do aplicativo host que está executando a sessão atual do PowerShell, embora em um formato diferente.
Editor de Registro
Você pode verificar a versão do PowerShell através do Editor de Registro de qualquer uma das seguintes maneiras:
- Use o cmdlet Get-ItemProperty para consultar o registro para a versão do PowerShell instalada.
- Vá ao Editor de Registro e localize manualmente os caminhos para os detalhes da versão do PowerShell.
Via Cmdlets
Para a versão 5 do PowerShell
Você pode visualizar a chave de registro PowerShellVersion com o cmdlet 'Get-ItemProperty'. Ela é assim:
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion
Para a versão 7 do PowerShell
Se você tem o PowerShell 7 ou posterior instalado, use o seguinte cmdlet:
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\PowerShellCore' | Select-Object -Property PSVersion
Conteúdo relacionado selecionado:
Método manual
Você pode obter as informações de configuração e versão do PowerShell no Editor de Registro.
Para a versão 5 do PowerShell
No editor de Registro, expanda Computador > HKEY-LOCAL-MACHINE > SOFTWARE > Microsoft > PowerShell > 3 > PowerShellEngine. No painel adjacente, você encontrará informações incluindo o número da versão do PowerShell.
Para a versão 7 do PowerShell
Se você tem o PowerShell 7 instalado, vá até o seguinte caminho no Editor de Registro para verificar a versão:
Computador > HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > PowerShellCore > InstalledVersions > 31ab5147-9a97-4452-8443-d9709f0516e1
Técnicas Avançadas para Identificação de Versão
Encontrar a versão do PowerShell em sistemas remotos
Pré-requisitos
Os seguintes pré-requisitos devem ser atendidos antes de você poder verificar a versão do PowerShell em uma máquina remota.
- O Windows Management Framework (WMF) está instalado e ativado na máquina remota.
- WinRM (Windows Remote Management) is configured and running on both the local and remote machines.
Run ‘winrm quickconfig’ to prepare a machine to be remotely accessed via PowerShell. - Você tem as permissões necessárias na máquina remota.
Verifique a versão do PowerShell em uma máquina remota
Use o cmdlet Invoke-Command com $PSVersionTable para verificar a versão do PowerShell instalada em um computador remoto.
Invoke-Command `
-ComputerName WS16-DC1 `
-ScriptBlock { $PSVersionTable.PSVersion } `
-Credential $cred
Nota:
- Neste comando, substitua o ComputerName (WS16-DC1) pelo nome específico do seu computador e as credenciais abaixo $cred por um nome de usuário e senha válidos.
- Ao usar vírgulas para separar valores, você pode gerenciar vários computadores remotos de uma só vez.
No cmdlet acima:
- Invoke-Command é usado para executar comandos em um computador remoto.
- ComputerName WS16-DC1 especifica o nome do computador remoto (WS16-DC1 neste caso).
- ScriptBlock {$PSVersionTable.PSVersion} é o bloco de script que é executado no computador remoto para recuperar as informações da versão do PowerShell.
- A credencial $cred especifica as credenciais para autenticação no computador remoto, onde $cred é um objeto que contém credenciais válidas (como um nome de usuário e senha).
Comparação de Versões do PowerShell em Sistemas Operacionais Windows
Esta tabela lista as versões do PowerShell pré-instaladas com diferentes sistemas operacionais Windows:
Versão do PowerShell | Data de Lançamento | Windows OS Suportado por Padrão |
|---|---|---|
|
PowerShell 1.0 |
Novembro de 2006 |
Windows Server 2003 SP1 |
|
PowerShell 2.0 |
Outubro de 2009 |
Windows Server 2008 R2 |
|
PowerShell 3.0 |
Setembro de 2012 |
Windows Server 2012 |
|
PowerShell 4.0 |
Outubro de 2013 |
Windows Server 2012 R2 |
|
PowerShell 5.0 |
Fevereiro de 2016 |
Windows Server 2016 |
|
PowerShell 5.1 |
Agosto de 2016 |
Windows Server 2016 |
|
PowerShell Core 6.0 |
Janeiro de 2018 |
Windows Server 2012 R2 |
Fonte: https://superops.com/powershell-version
O PowerShell 5.1 é a última versão instalada por padrão em clientes e servidores Windows. Foi sucedido pelo PowerShell Core (agora PowerShell 7), que é um produto separado. Ele não vem pré-instalado, mas deve ser instalado manualmente.
A instalação de uma versão mais recente não substitui a versão pré-instalada por padrão. Por exemplo, o PowerShell 7.x e o Windows PowerShell 5.1 podem coexistir.
Conteúdo relacionado selecionado:
Atualize ou Instale Versões Mais Recentes do PowerShell
Para se manter atualizado sobre o Windows PowerShell 5.1 no Windows 10 e 11, execute sempre as atualizações do sistema para manter seu PC atualizado.
O PowerShell Core (versão 7) é um produto diferente do Windows PowerShell e deve ser instalado manualmente por qualquer um dos seguintes métodos:
- Baixe e execute o arquivo de instalação
- Execute um comando do PowerShell no seu computador
Como recomendação, mantenha tanto o Windows PowerShell quanto o PowerShell Core em seu computador para aproveitar ao máximo o PowerShell. Tenha em mente que scripts antigos podem não funcionar em versões mais recentes e scripts atuais podem não funcionar em versões mais antigas.
Você pode baixar e instalar uma versão mais recente do PowerShell de qualquer uma destas maneiras.
Instale o PowerShell Usando a Microsoft Store
No Windows 10 e Windows 11, abra a Microsoft Store e procure por PowerShell.
A versão mais recente do aplicativo PowerShell está listada nos resultados da pesquisa como PowerShell (publicado pela Microsoft Corporation). Clique para ver os detalhes, onde você também pode clicar em Get para baixar e instalar.
Instale o PowerShell Usando Winget
O gerenciador de pacotes WinGet instala a versão mais recente do PowerShell a partir da linha de comando.
Pesquise por PowerShell usando Winget
Para visualizar uma lista de pacotes relacionados ao PowerShell, com seus números de versão e IDs, utilize o seguinte cmdlet:
winget search PowerShell
Instale o PowerShell
Localize o pacote PowerShell necessário e instale-o usando seu ID. O ID para o PowerShell é Microsoft.PowerShell.
Para instalar a versão mais recente do PowerShell, utilize o seguinte cmdlet:
winget install Microsoft.PowerShell
Instalar o PowerShell Usando Pacote MSI
Outro método é baixar o PowerShell do GitHub e usar o MSI para instalação. Visite a página oficial de lançamentos do PowerShell GitHub release page para localizar a versão mais recente do PowerShell (como o PowerShell 7.x). Desça até a seção Assets deste lançamento e baixe o pacote MSI.
O pacote leva algum tempo para ser baixado. Uma vez baixado, execute o instalador para instalar o PowerShell.
Gerenciando Múltiplas Versões do PowerShell
Você pode usar o clássico Windows PowerShell (geralmente versão 5.1) e o moderno PowerShell Core (versões 6.x e 7.x) na mesma máquina sem conflitos.
Um caso de uso comum para gerenciar múltiplas versões do PowerShell é quando diferentes ambientes ou scripts exigem versões específicas.
Veja como você pode gerenciar múltiplas versões do PowerShell no seu sistema.
Execute uma Versão Específica a partir da caixa de diálogo Executar ou da Linha de Comando
Abra a caixa de diálogo Executar e especifique o caminho para o arquivo exe de uma versão do PowerShell para iniciá-lo (veja o exemplo abaixo).
Você também pode executar uma versão específica do PowerShell especificando seu caminho no PowerShell, conforme fornecido no exemplo a seguir. Observe que este método é válido apenas para o PowerShell 7, onde você pode alternar entre versões.
Exemplo:
- PowerShell 5.1
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- PowerShell 7
C:\Program Files\PowerShell\7\pwsh.exe
Perfis e Configuração do PowerShell
Um perfil do PowerShell é um script do PowerShell que é executado toda vez que você inicia o PowerShell, exceto quando você usa a flag -NoProfile.
Cada versão do PowerShell possui seu próprio arquivo de perfil. Se você deseja que configurações específicas estejam disponíveis em uma versão e não na outra, você tem a opção de configurar o perfil separadamente para cada versão.
Localize o arquivo de perfil manualmente
- O perfil do PowerShell 5.1 pode estar em: C:\Users\<username>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
- O perfil do PowerShell 7+ pode estar em: C:\Users\<username>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
Localize o arquivo de perfil através do PowerShell
Você também pode usar o próprio PowerShell para recuperar o perfil do PowerShell. Simplesmente use $Profile para localizar o caminho do perfil, pois a variável $Profile armazena o caminho.
$Profile
Isso exibe o caminho para o perfil do aplicativo host do PowerShell do usuário atual. Você pode encaminhar a variável $Profile para o cmdlet Get-Member para obter caminhos adicionais.
$Profile | Get-Member -MemberType NoteProperty
Conteúdo relacionado selecionado:
Teste de Compatibilidade com Scripts e Módulos Antigos
É importante testar a compatibilidade com scripts e módulos mais antigos no PowerShell ao atualizar para versões mais recentes ou integrar código legado.
A seguir estão algumas maneiras de testar a compatibilidade com scripts e módulos mais antigos.
Use o Windows PowerShell e o PowerShell Core lado a lado
Você pode executar tanto o Windows PowerShell quanto o PowerShell Core na mesma máquina. Teste seu script ou módulo em ambos os ambientes para compatibilidade. Lembre-se de que a versão 5.1 é o último grande lançamento do Windows PowerShell enquanto a versão 7 é o lançamento atual do PowerShell Core.
Um exemplo é como:
./your_script.ps1
./ indica que o script está localizado no diretório atual enquanto your_script.ps1 é o script que você está tentando executar. .ps1 é a extensão padrão para arquivos de script do PowerShell.
Verificar a versão do PowerShell
É uma boa ideia saber para qual versão do PowerShell seu script foi inicialmente escrito e em qual versão você está tentando executá-lo.
Use o Cmdlet Test-ModuleManifest
O cmdlet Test-ModuleManifest é usado para verificar se um manifesto de módulo do PowerShell (.psd1) é válido e está corretamente configurado. Ele também verifica o arquivo quanto a dependências e problemas de compatibilidade.
Test-ModuleManifest -Path "C:\Path\To\YourModule.psd1"
O parâmetro -Path especifica o caminho para o arquivo .psd1.
Use o Cmdlet Get-Command para verificar a disponibilidade do Cmdlet
Alguns cmdlets e parâmetros podem ser suportados em uma versão do PowerShell e não em outra. Use o cmdlet Get-Command para verificar a disponibilidade e a sintaxe dos cmdlets que você está utilizando. Aqui está um exemplo:
Get-Command -Name Invoke-RestMethod -Module Microsoft.PowerShell.Utility
PSScriptAnalyzer para Análise de Código Estático
PSScriptAnalyzer é uma ferramenta que verifica as melhores práticas e identifica problemas de compatibilidade. Use o seguinte cmdlet para instalar e executá-lo:
Install-Module -Name PSScriptAnalyzer
Invoke-ScriptAnalyzer -Path "C:\Path\To\YourScript.ps1"
Esta é uma boa maneira de pegar qualquer problema com seus scripts ou cmdlets obsoletos antes da execução.
Verifique a compatibilidade com .NET
O Windows PowerShell (5.1) é baseado no .NET Framework, enquanto o PowerShell Core (6+) e o PowerShell 7+ são baseados no .NET Core/.NET. Caso seu script ou módulo dependa de assemblies .NET, certifique-se de que eles sejam compatíveis tanto com .NET Core/.NET quanto com .NET Framework.
Você pode testar os assemblies .NET usados no seu script com o seguinte cmdlet:
[System.Reflection.Assembly]::LoadFile("C:\Path\To\YourAssembly.dll")
Conclusão
Saber qual versão do PowerShell está instalada no seu computador é importante por várias razões. Diferentes versões vêm com novos cmdlets, funcionalidades e sintaxe, então conhecer a versão garante que seus scripts sejam compatíveis com a versão em que estão sendo executados. O PowerShell Core introduziu a compatibilidade entre plataformas, então saber a versão instalada é essencial para utilizar as funcionalidades e módulos específicos de cada plataforma.
De todos os métodos disponíveis para determinar a versão do PowerShell em execução no seu computador, $PSVersionTable é altamente recomendado. Não é apenas o método mais confiável, mas também o mais preciso para identificação de versão. Ele fornece uma visão geral abrangente do ambiente PowerShell, ajudando a garantir que os scripts sejam compatíveis com a versão e ambiente específicos.
Você deve atualizar regularmente o PowerShell para garantir que os patches de segurança críticos que protegem contra vulnerabilidades encontradas em versões anteriores estejam instalados. Além disso, a atualização regular garante acesso às últimas funcionalidades, como novos cmdlets e melhorias multiplataforma. Isso também garante um desempenho aprimorado, políticas de execução robustas e suporte aprimorado para execução paralela e assíncrona. Em resumo, atualizar para a versão mais recente do PowerShell ajuda a criar soluções de automação mais seguras, eficientes e escaláveis, ao mesmo tempo que reduz riscos associados a versões desatualizadas ou sem suporte.
Netwrix Directory Manager
FAQ
Como verificar a versão do powershell?
A maneira mais fácil de verificar a versão do PowerShell é através do próprio PowerShell. Você pode exibir a versão do PowerShell que está utilizando, por exemplo, através do PSVersionTable.PSVersion ou do cmdlet Get-Host.
Compartilhar em
Saiba Mais
Sobre o autor
Tyler Reese
VP de Gestão de Produto, CISSP
Com mais de duas décadas na indústria de segurança de software, Tyler Reese tem um conhecimento íntimo dos desafios de identidade e segurança que evoluem rapidamente e com os quais as empresas se deparam hoje. Atualmente, ele atua como diretor de produto para o portfólio de Netwrix Identity and Access Management, onde suas responsabilidades incluem avaliar tendências de mercado, definir a direção para a linha de produtos IAM e, em última análise, atender às necessidades dos usuários finais. Sua experiência profissional varia desde consultoria em IAM para empresas Fortune 500 até atuar como arquiteto empresarial de uma grande empresa de venda direta ao consumidor. Atualmente, ele possui a certificação CISSP.