In PowerShell, there are a zillion ways to do the same thing (or close to it). Neste post do blog, você vai aprender de todas as maneiras verificar versão PowerShell que você tem em computadores locais e remotos. Vamos cobrir os maus caminhos e o meu caminho recomendado.
Se você gostaria de ir de PowerShell newbie para PowerShell guru, eu recomendo devorar este mini-curso gratuito sobre a construção de uma ferramenta PowerShell. Este é um tutorial passo-a-passo com explicações completas e orientação de Adam the Automator!,
Existem sites que mostram várias maneiras de verificar a versão Powershell. Mas nenhum que compilou uma lista completa de todos eles. Decidi mudar isso.
todas estas formas devem funcionar tanto no núcleo PowerShell e PowerShell do Windows. Estes métodos também devem funcionar nas versões PowerShell 1.0 do Windows até PowerShell 7.,
As maneiras que você pode encontrar uma versão do PowerShell que você está executando:
(Get-Host).Version
propriedade$host.Version
propriedade- O registro do Windows (Windows PowerShell apenas)
$PSVersionTable.PSVersion
propriedade
Vamos quebrar todos os caminhos para encontrar a versão do PowerShell do menos para o mais recomendado forma.
tabela de conteúdo
Get-Host
PowerShell tem um conceito conhecido como hosts. Um host é um programa que está hospedando o motor PowerShell., Não é o motor PowerShell em si.A consola PowerShell ou um editor de código com um terminal integrado São hosts PowerShell.
um host pode ter uma versão que é completamente independente do PowerShell em si. Isto pode enganar muitos recém-chegados. Deixa-me mostrar-te porquê.
Se executar (Get-Host).Version
, verá que devolve um número de versão que parece poder ser a versão do Motor PowerShell. As aparências enganam.
Abaixo eu corri Get-Host
no Windows PowerShell 5.1 e você pode ver que ele volta com 5.1.17134.858., Isto parece uma versão legítima.
No entanto, às vezes quando você executa Get-Host
em um terminal integrado, a versão não é a mesma. Embora normalmente o host irá representar a mesma versão do motor, não é necessário sempre fazer isso.
Verificar Powershell Versão via Get-Host em Computadores Remotos
Mesmo que Get-Host
parece retornar a mesma versão quando executado em um computador local, ele nunca vai nos computadores remotos.,
Por exemplo, vamos executar Get-Host
num servidor remoto do Windows 2016 viaInvoke-Command
e ver o que acontece.
da última vez que verifiquei, não é possível executar o PowerShell v1 no Windows Server 2016.
depending on Get-Host
is just a bad ID all around.
Verifique a versão Powershell $host.Version command
Referencing $host.Version
is another way to check Powershell version. A variável$host
é uma variável automática que devolve o mesmo resultado queGet-Host
.,
não Há nada de especial sobre este método. É simplesmente o mesmo que executar Get-Host
.
$host.Version on Remote Computers
you will see the same behavior via PowerShell Remoting with $host.Version
as you will running Get-Host
.perigo, Will Robinson!
Registo
Se não quiser abrir o PowerShell em si, também pode verificar o registo., A versão do PowerShell está escondida sob um valor no caminho chave do registro HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine
. Esta chave de registro tem um valor chamado PowerShellVersion
que você pode referenciar usando Get-ItemProperty
.
Você pode ver que esta versão é semelhante, mas não inclui a revisão como as outras opções fazem.
usando Outras ferramentas
Usando o registro também significa que você não precisa usar PowerShell em tudo para encontrar a versão. Você pode executar comandos a partir da linha de comandos ou outra ferramenta que pode ler o registro.,
registo em computadores remotos
o registo é estático e os valores não mudam localmente ou remotamente. Você pode estar confiante de que o que você vê localmente será o mesmo que você vê remotamente.
mostrar a mesma versão local e remotamente é bom. Mas eu tenho uma maneira melhor de lhe mostrar usando a variável $PSVersionTable
automática.
Verifique a versão Powershell via $PSVersionTable.O comando PSVersion
o último e último método está referenciando a variável PSVersion
propriedade na variável $PSVersionTable
variável automática., Este método sempre representará o motor PowerShell.
The $PSVersionTable
automatic variable is a read-only hash table that returns information specifically about the PowerShell engin version. Esta variável automática não só devolve a versão como também PSEdition
. Esta propriedade pode ser Núcleo ou Desktop para fornecer mais informações sobre a edição do PowerShell que está em execução.,
$PSVersionTable em Computadores Remotos
Usando a tag $PSVersionTable
variável automática, é preciso localmente como remotamente. Você pode ver abaixo que ao envolver $PSVersionTable.PSVersion
em um scriptblock e executando esse código em um computador remoto, ele irá retornar a mesma versão.
resumo
neste post no blog, você aprendeu todas as maneiras de verificar a versão do PowerShell tanto localmente como remotamente., Espero que os primeiros métodos lhe tenham dado uma idéia sobre quais maneiras de não verificar a versão!
I recommend always using $PSVersionTable.PSVersion
. Todos os outros métodos podem parecer semelhantes à versão do Motor PowerShell, mas podem nem sempre refletir a versão do motor.