Como posso determinar qual versão do PowerShell está instalada em um computador e, de fato, se está instalada?
powershell
MagicAndi
fonte
fonte
$PSVersionTable
é mais confiável e retorna $ PSVersion. Você também pode usar$PSVersionTable.PSVersion
. Mesmo se você estiver conectado remotamente à máquina executando uma versão diferente (invoke-command -computername myRemotePC -Credential foo {$host}
), parece que$host
apenas mostrará a versão mais baixa que eles concordaram em serializar. Enquanto$PSVersionTable
mostrará a versão verdadeira. Espero que ele iria ajudar alguém ..notepad $profile
e jogueifunction psver { $PSVersionTable; $PSVersionTable.PSVersion }
nele. Recarregando. $profile
e posso digitar apsver
qualquer momento para obter informações detalhadas da versão e outros detalhes.Eu usaria Get-Host ou $ PSVersionTable . Como Andy Schneider aponta,
$PSVersionTable
não funciona na versão 1; foi introduzido na versão 2.fonte
$host.version
não é confiável - por exemplo, em PowerGUI, ele retorna a versão do host PowerGUI que não é o mesmo que a versão do motor PowerShell (que é o que é desejado.)Você pode olhar para a variável incorporada
$psversiontable
,. Se não existir, você tem a V1. Se existir, ele fornecerá todas as informações necessárias.fonte
Para determinar se o PowerShell está instalado, você pode verificar a existência de
e
e, se existir, se o valor é 1 (para instalado), conforme detalhado na postagem do blog Verifique se o PowerShell está instalado e a versão .
Para determinar a versão do PowerShell instalada, você pode verificar as chaves do Registro
e
Para determinar a versão do PowerShell instalada a partir de um script .ps1, você pode usar a seguinte linha, conforme detalhado no PowerShell.com em Qual versão do PowerShell estou executando .
O mesmo site também fornece uma função para retornar a versão:
fonte
Você pode verificar diretamente a versão com uma linha apenas invocando o PowerShell externamente , como no prompt de comando
De acordo com o @psaul, você pode realmente ter um comando independente de onde veio (CMD, PowerShell ou Pwsh). Obrigado por isso.
Eu testei e funcionou perfeitamente no CMD e no PowerShell.
fonte
cmd
epowershell
sem sucesso. Eu teria esperado o mesmo comportamento também. :)pwsh -Command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"
funciona bem.Você pode verificar se a versão do Windows PowerShell foi instalada executando a seguinte verificação:
No console do Windows PowerShell, digite o seguinte comando no prompt de comando e pressione ENTER:
Você verá uma saída parecida com esta:
http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/
fonte
O método compatível com encaminhamento recomendado pela Microsoft para verificar se o PowerShell está instalado e determinar a versão instalada é examinar duas chaves de registro específicas. Reproduzi os detalhes aqui, caso o link se quebre.
De acordo com a página vinculada:
Para verificar se alguma versão do PowerShell está instalada, verifique o seguinte valor no registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
Para verificar se a versão 1.0 ou 2.0 do PowerShell está instalada, verifique o seguinte valor no registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
fonte
Encontrei a maneira mais fácil de verificar se o instalado era:
cmd
e OK)powershell
e pressione return. Você deve receber oPS
prompt do PowerShell :Em seguida, você pode verificar a versão no prompt do PowerShell digitando
$PSVersionTable.PSVersion
:Digite
exit
se você deseja voltar ao prompt de comando (exit
novamente se também deseja fechar o prompt).Para executar scripts, consulte http://ss64.com/ps/syntax-run.html .
fonte
$host.version
é simplesmente errado / não confiável. Isso fornece a versão do executável de hospedagem (powershell.exe, powergui.exe, powershell_ise.exe, powershellplus.exe etc.) e não a versão do mecanismo em si.A versão do mecanismo está contida em
$psversiontable.psversion
. Para o PowerShell 1.0, essa variável não existe; portanto, obviamente, se essa variável não estiver disponível, é totalmente seguro assumir que o mecanismo é 1.0, obviamente.fonte
Usar:
Você pode baixar o script detalhado em Como determinar a versão instalada do PowerShell .
fonte
A maneira mais fácil de esquecer esta página e nunca retornar a ela é aprender
Get-Variable
:Não há necessidade de lembrar todas as variáveis. Apenas
Get-Variable
é suficiente (e "Deve haver algo sobre a versão").fonte
$PSVersionTable
Para verificar se o PowerShell está instalado, use:
Para verificar se o RC2 ou o RTM está instalado, use:
Fonte: este site .
fonte
Como a resposta mais útil não abordou a parte se existe , pensei em dar uma olhada nela por meio de uma solução rápida e suja. Ele depende do PowerShell estar na variável de ambiente do caminho , provavelmente o que você deseja. (Dica do chapéu para a resposta superior, pois eu não sabia disso.) Cole isso em um arquivo de texto e nomeie-o
ou similar.
fonte
Eu precisava verificar a versão do PowerShell e executar o código apropriado. Alguns de nossos servidores executam a v5 e outros a v4. Isso significa que algumas funções, como comprimir, podem ou não estar disponíveis.
Esta é a minha solução:
fonte
O cmdlet abaixo retornará a versão do PowerShell.
fonte
$PSVersionTable
é uma variável automática; um objeto. Não é um cmdlet.Este é o principal resultado da pesquisa para "O arquivo em lote obtém a versão do powershell", portanto, gostaria de fornecer um exemplo básico de como fazer o fluxo condicional em um arquivo em lotes, dependendo da versão do powershell
Exemplo genérico
Exemplo do mundo real
fonte
Você também pode chamar o comando "host" na linha de comando do PowerShell. Deve fornecer o valor da
$host
variável.fonte
host
resolve paraGet-Host
. Independentemente disso, não é uma maneira confiável de obter a versão.Estendendo a resposta com um operador selecionado:
fonte
Get-Host
).