Adam, o automatizador

No PowerShell, existem zilhões de maneiras de fazer a mesma coisa (ou quase isso). Nesta postagem do blog, você aprenderá todas as maneiras de verificar a versão do PowerShell existente em computadores locais e remotos. Abordaremos os métodos ruins e meu método recomendado.

Se você gostaria de passar de novato do PowerShell a guru do PowerShell, recomendo devorar isso GRÁTIS mini-curso sobre a construção de uma ferramenta PowerShell. Este é um tutorial passo a passo com explicações completas e orientações de Adam, o Automator!

Existem sites que mostram várias maneiras de verificar a versão do Powershell. Mas nenhum que compilou uma lista abrangente de todos eles. Decidi mudar isso.

Todas essas maneiras devem funcionar no Windows PowerShell e no PowerShell Core. Esses métodos também devem funcionar no Windows PowerShell versões 1.0 até o PowerShell 7.

As maneiras de descobrir uma versão do PowerShell que está executando são:

  1. A (Get-Host).Version propriedade
  2. A $host.Version propriedade
  3. O registro (somente Windows PowerShell)
  4. A $PSVersionTable.PSVersion propriedade

Vamos analisar todas as maneiras de encontrar a versão do PowerShell, do menos ao mais recomendado .

Índice

Get-Host

O PowerShell tem um conceito conhecido como hosts. Um host é um programa que hospeda o mecanismo PowerShell. Não é o motor do PowerShell em si. O console do PowerShell ou um editor de código com um terminal integrado são hosts do PowerShell.

Um host pode ter uma versão que é completamente independente do próprio PowerShell. Isso pode enganar muitos recém-chegados. Deixe-me mostrar por quê.

Se você executar (Get-Host).Version, verá que ele retorna um número de versão que parece ser a versão do mecanismo do PowerShell. As aparências enganam.

Abaixo, executei Get-Host no Windows PowerShell 5.1 e você pode ver que ele volta com 5.1.17134.858. Parece uma versão legítima.

No entanto, às vezes, quando você executa Get-Host em um terminal integrado, o versão não é a mesma. Embora normalmente o host represente a mesma versão do mecanismo, nem sempre é necessário fazer isso.

Verifique a versão do PowerShell via Get-Host em computadores remotos

Mesmo que Get-Host parece retornar a mesma versão quando executado em um computador local, mas nunca retornará em computadores remotos.

Por exemplo, vamos executar Get-Host em um servidor Windows Server 2016 remoto via Invoke-Command e veja o que acontece.

A última vez que verifiquei, não é possível executar o PowerShell v1 no Windows Server 2016.

Contar com Get-Host é apenas uma péssima ideia.

Verifique o comando Powershell versão $ 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.

Referência $host.Version

Não há nada de especial neste método. É simplesmente o mesmo que executar Get-Host.

$ host.Version em computadores remotos

Você verá o mesmo comportamento por meio do PowerShell Remoting com $host.Version conforme você executará Get-Host.

Perigo, Will Robinson!

Registro

Se você não deseja abrir o PowerShell propriamente dito, também pode verificar o registro. A versão do PowerShell está escondida sob um valor no caminho da chave de registro HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine. Esta chave de registro tem um valor chamado PowerShellVersion, que você pode fazer referência usando Get-ItemProperty.

Você pode ver que isto versão é semelhante, mas não inclui a revisão como as outras opções fazem.

Usando outras ferramentas

Usar o registro também significa que você não precisa usar o PowerShell para encontrar a versão. Você pode executar comandos do prompt de comando ou de outra ferramenta que possa ler o registro.

Registro em computadores remotos

O registro é estático e os valores não mudam local ou remotamente. Você pode ter certeza de que o que você vê localmente é o mesmo que vê remotamente.

Mostrar a mesma versão local e remotamente é bom. Mas eu tenho uma maneira melhor de mostrar a você usando a $PSVersionTable variável automática.

Verifique a versão do PowerShell por meio do comando $ PSVersionTable.PSVersion

O último e último método faz referência à propriedade PSVersion na $PSVersionTable variável automática.Este método sempre representará o mecanismo PowerShell.

A $PSVersionTable variável automática é 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 retorna apenas a versão, mas também PSEdition. Esta propriedade pode ser Core ou Desktop para fornecer mais informações sobre a edição do PowerShell em execução.

$ PSVersionTable output

$ PSVersionTable em computadores remotos

Usando o $PSVersionTable a variável automática é precisa tanto localmente quanto remotamente. Você pode ver abaixo que, envolvendo $PSVersionTable.PSVersion em um scriptblock e executando esse código em um computador remoto, ele retornará a mesma versão.

Resumo

Nesta postagem do blog, você aprendeu todas as maneiras de verificar a versão do PowerShell local e remotamente. Espero que os primeiros métodos tenham dado a você uma idéia de como não verificar a versão!

Eu recomendo sempre usar $PSVersionTable.PSVersion. Todos os outros métodos podem parecer semelhantes à versão do mecanismo do PowerShell, mas nem sempre refletem a versão do mecanismo.

Deixe uma resposta

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