Adam the Automator (Português)

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:

  1. (Get-Host).Version propriedade
  2. $host.Version propriedade
  3. O registro do Windows (Windows PowerShell apenas)
  4. $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.,

Referência $host.Version

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 PowerShellVersionque 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 de saída

$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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *