Como verificar a versão do PowerShell instalada?
Neste artigo, aprenderemos quais versões do PowerShell existem, qual é a diferença entre Windows PowerShell
e PowerShell Core
e como verificar a versão do PowerShell instalada em um computador local ou remoto.
Histórico e versões do Windows PowerShell e PowerShell Core
O PowerShell é instalado por padrão em todas as versões do Windows a partir do Windows 7 SP1 e Windows Server 2008 R2 SP1. A tabela a seguir mostra a lista de todas as versões do PowerShell:
Versão PS | Observação |
PowerShell 1.0 | Pode ser instalado manualmente no Windows Server 2003 SP1 e Windows XP |
PowerShell 2.0 | Windows Server 2008 R2 e Windows 7 |
PowerShell 3.0 | Windows 8 e Windows Server 2012 |
PowerShell 4.0 | Windows 8.1 e Windows Server 2012 R2 |
PowerShell 5.0 | Pré-instalado no Windows 10 RTM e atualizado automaticamente para 5.1 por meio do Windows Update |
PowerShell 5.1 | Ele é integrado ao Windows 10 (a partir do Build 1709) e Windows Server 2016 |
PowerShell Core 6.0 e 6.1 | É a próxima versão do PowerShell de plataforma cruzada (com base no .NET Core) que pode ser instalada em todas as versões do Windows com suporte e no MacOS, CentOS, RHEL, Debian, Ubuntu, openSUSE |
PowerShell Core 7.0 | É a versão mais recente do PowerShell lançada em março de 2020 (o .NET Core 3.1 é usado em vez do .NET Core 2.x). / td> |
Vale a pena notar que nos últimos 2 anos a Microsoft suspendeu o desenvolvimento do Windows PowerShell clássico (apenas correções de bugs e atualizações de segurança são lançadas) e se concentrou no PowerShell Core de plataforma cruzada de código aberto.
Qual é a diferença entre o Windows PowerShell e o PowerShell Core?
- O Windows PowerShell é baseado no .NET Framework (por exemplo, o PowerShell 5 requer o .NET Framework v4.5, certifique-se de que está instalado). PowerShell Core é baseado em .Net Core;
- O Windows PowerShell funciona apenas em sistemas operacionais Windows, enquanto o PowerShell Core é multiplataforma e pode funcionar no Linux também;
- PowerShell Core é não é totalmente compatível com o Windows PowerShell, no entanto, a Microsoft está trabalhando para melhorar a compatibilidade com versões anteriores de cmdlets e scripts PS anteriores. (é recomendável testar seus scripts PS1 antigos antes de passar para o PowerShell Core). O PowerShell Core 7 oferece a mais alta compatibilidade com o Windows PowerShell;
- Você não pode usar o PowerShell ISE Editor para editar scripts do PowerShell Core (mas o Visual Studio Code pode ser usado);
- Desde o Windows PowerShell não é mais desenvolvido, é recomendável que você comece a migrar para o PowerShell Core.
Como obter a versão do PowerShell do console?
A maneira mais fácil de descobrir qual A versão do PowerShell está instalada em seu computador para usar o comando:
host
Verifique o valor da propriedade Version.
ou
$PSVersionTable
Você pode obter apenas o valor da versão do PowerShell :
$PSVersionTable.PSVersion.major
(neste exemplo, temos PSVersion 2.0 em vitória limpa dows Server 2008 R2)
O comando $ PSVersionTable funciona corretamente no PowerShell Core em diferentes sistemas operacionais.
Você também pode descobrir a versão do PowerShell instalada por meio do registro. Para fazer isso, obtenha o valor do parâmetro PowerShellVersion na chave do registro HKLM\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine
usando o cmdlet Get-ItemProperty:
No Windows Server 2008 R2 / Windows 7, você pode obter o valor do parâmetro de registro em outra chave de registro:
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine -Name "PowerShellVersion").PowerShellVersion
Para obter a versão do PowerShell Core instalada, use o seguinte comando:
Verificar a versão do PowerShell em computadores remotos
Para verifique a versão do PowerShell em um host remoto, use o valor da variável de ambiente $ PSVersionTable ou obtenha as informações diretamente do registro. Outros métodos podem retornar dados incorretos.
Você pode obter a versão do PowerShell instalada em um computador remoto por meio do PowerShell Remoting usando o cmdlet Invoke-Command: