No PowerShell, existem mil maneiras de fazer a mesma coisa (ou algo semelhante). Neste post do blog, você aprenderá todas as maneiras de verificar a versão do PowerShell que você tem em computadores locais e remotos. Vamos cobrir as formas ruins e a minha forma recomendada.
Existem sites que mostram várias maneiras de verificar sua versão do Powershell. Mas nenhum compilou uma lista abrangente de todas elas. Decidi mudar isso.
Todas essas maneiras devem funcionar tanto no Windows PowerShell quanto no PowerShell Core. Esses métodos também devem funcionar nas versões do Windows PowerShell 1.0 até o PowerShell 7.
As maneiras de descobrir a versão do PowerShell que você está usando são:
- A propriedade
(Get-Host).Version
- A propriedade
$host.Version
- O registro (apenas no Windows PowerShell)
- A propriedade
$PSVersionTable.PSVersion
Vamos detalhar todas as maneiras de encontrar a versão do PowerShell da menos recomendada para a mais recomendada.
Get-Host
O PowerShell tem um conceito conhecido como hosts. Um host é um programa que está hospedando o motor do PowerShell. Não é o próprio motor do PowerShell. O console do PowerShell ou um editor de código com um terminal integrado são hosts do PowerShell.
A host can have a version that is completely independent of PowerShell itself. This can be deceiving to many newcomers. Let me show you why.
Se você executar (Get-Host).Version
, verá que ele retorna um número de versão que parece ser a versão do motor do PowerShell. As aparências podem ser enganosas.
Abaixo, executei Get-Host
no Windows PowerShell 5.1 e você pode ver que retorna 5.1.17134.858. Isso parece ser uma versão legítima.
No entanto, às vezes, ao executar Get-Host
em um terminal integrado, a versão não é a mesma. Embora geralmente, o host represente a mesma versão do motor, nem sempre é assim.
Verifique a versão do PowerShell via Get-Host em computadores remotos
Mesmo que Get-Host
pareça retornar a mesma versão ao ser executado em um computador local, nunca fará isso em computadores remotos.
Por exemplo, vamos executar Get-Host
em um servidor remoto do Windows Server 2016 via Invoke-Command
e ver o que acontece.
Da última vez que verifiquei, não era possível executar o PowerShell v1 no Windows Server 2016.
Depender de Get-Host
é uma má ideia em todos os aspectos.
Verifique a versão do PowerShell com o comando $host.Version
Fazer referência a $host.Version
é outra maneira de verificar a versão do PowerShell. A variável $host
é uma variável automática que retorna a mesma saída que Get-Host
.

$host.Version
Não há nada de especial sobre este método. É simplesmente o mesmo que executar Get-Host
.
$host.Version em Computadores Remotos
Você verá o mesmo comportamento via Remoção do PowerShell com $host.Version
como você verá executando Get-Host
.
Perigo, Will Robinson!
Registro
Se você não quiser abrir o próprio PowerShell, também pode verificar o registro. A versão do PowerShell está escondida sob um valor no caminho da chave do registro HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine
. Esta chave do registro tem um valor chamado PowerShellVersion
que você pode referenciar usando Get-ItemProperty
.
Você pode ver que esta versão é similar, mas não inclui a revisão como as outras opções fazem.
Usando Outras Ferramentas
O uso do registro também significa que você não precisa usar o PowerShell de forma alguma para encontrar a versão. Você pode executar comandos do prompt de comando ou outra ferramenta que possa ler o registro.
Registro em Computadores Remotos
O registro é estático e os valores não mudarão local ou remotamente. Você pode ter confiança de que o que você vê localmente será o mesmo que você vê remotamente.
Mostrar a mesma versão localmente e remotamente é bom. Mas eu tenho uma maneira melhor de mostrar usando a variável automática $PSVersionTable
.
Verifique a Versão do Powershell via o comando $PSVersionTable.PSVersion
O último e método final é fazer referência à propriedade PSVersion
na variável automática $PSVersionTable
. Este método sempre representará o motor do PowerShell.
A variável automática $PSVersionTable
é uma tabela de hash somente leitura que retorna informações especificamente sobre a versão do motor do PowerShell. Esta variável automática não apenas retorna a versão, mas também a PSEdition. Esta propriedade pode ser Core ou Desktop para fornecer mais informações sobre a edição do PowerShell em execução.

$PSVersionTable em Computadores Remotos
Usar a variável automática $PSVersionTable
é preciso tanto localmente quanto remotamente. Você pode ver abaixo que, ao envolver $PSVersionTable.PSVersion
em um bloco de script e executar esse código em um computador remoto, ele retornará a mesma versão.
Resumo
Neste post do blog, você aprendeu todas as maneiras de verificar a versão do PowerShell tanto localmente quanto remotamente. Espero que os primeiros métodos tenham lhe dado uma ideia de quais maneiras não usar para verificar a versão!
I recommend always using $PSVersionTable.PSVersion
. All of the other methods may appear similar to the PowerShell engine version but may not always reflect the engine version.
Se eu perdi alguma maneira, por favor me avise nos comentários. Ficarei feliz em atualizar o post e dar crédito a você.