¿Cómo puedo determinar qué versión de PowerShell está instalada en una computadora y, de hecho, si está instalada?
powershell
MagicAndi
fuente
fuente

$PSVersionTablees más confiable y devuelve $ PSVersion. También puedes usar$PSVersionTable.PSVersion. Incluso si está conectado de forma remota a la máquina que ejecuta una versión diferente (invoke-command -computername myRemotePC -Credential foo {$host}), parece$hostque solo mostrará la versión más baja que acordaron para la serialización. Mientras$PSVersionTablemostrará la versión verdadera. Espero que ayude a alguien ...notepad $profiley me tiréfunction psver { $PSVersionTable; $PSVersionTable.PSVersion }. Una recarga. $profiley puedo escribir enpsvercualquier momento para obtener la información detallada de la versión y otros detalles.Me gustaría utilizar ya sea Get-Host o $ PSVersionTable . Como señala Andy Schneider,
$PSVersionTableno funciona en la versión 1; Se introdujo en la versión 2.fuente
$host.versionno es confiable - por ejemplo en PowerGUI, devuelve la versión anfitrión PowerGUI que no es el mismo que la versión del motor powershell (que es lo que se desea.)Usted puede mirar en el incorporado en la variable,
$psversiontable. Si no existe, tienes V1. Si existe, le dará toda la información que necesita.fuente
Para determinar si PowerShell está instalado, puede verificar la existencia de
y
y, si existe, si el valor es 1 (para instalado), como se detalla en la publicación del blog Compruebe si PowerShell está instalado y la versión .
Para determinar la versión de PowerShell que está instalada, puede verificar las claves de registro
y
Para determinar la versión de PowerShell que se instala desde un script .ps1, puede usar la siguiente línea, como se detalla en PowerShell.com en la versión de PowerShell que estoy ejecutando .
El mismo sitio también ofrece una función para devolver la versión:
fuente
Puede verificar directamente la versión con una sola línea invocando PowerShell externamente , como desde el símbolo del sistema
Según @psaul , en realidad puede tener un comando que sea independiente de su origen (CMD, PowerShell o Pwsh). Gracias por eso.
Lo probé y funcionó perfectamente tanto en CMD como en PowerShell.
fuente
cmdypowershellen vano. Hubiera esperado el mismo comportamiento también. :)pwsh -Command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"Funciona genial.Puede verificar que la versión de Windows PowerShell esté instalada completando la siguiente verificación:
En la consola de Windows PowerShell, escriba el siguiente comando en el símbolo del sistema y luego presione ENTRAR:
Verá una salida similar a esta:
http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/
fuente
El método compatible con reenvío recomendado de Microsoft para verificar si PowerShell está instalado y determinar la versión instalada es mirar dos claves de registro específicas. He reproducido los detalles aquí en caso de que se rompa el enlace.
Según la página vinculada:
Para verificar si hay instalada alguna versión de PowerShell, verifique el siguiente valor en el registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1Para verificar si la versión 1.0 o 2.0 de PowerShell está instalada, verifique el siguiente valor en el registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEnginefuente
Encontré que la forma más fácil de verificar si estaba instalado era:
cmd, luego OK)powershellluego presione regresar. Entonces debería obtener elPSindicador de PowerShell :Luego puede verificar la versión desde el indicador de PowerShell escribiendo
$PSVersionTable.PSVersion:Escriba
exitsi desea volver al símbolo del sistema (exitnuevamente si también desea cerrar el símbolo del sistema).Para ejecutar scripts, consulte http://ss64.com/ps/syntax-run.html .
fuente
$host.versiones simplemente incorrecto / poco confiable. Esto le proporciona la versión del ejecutable de alojamiento (powershell.exe, powergui.exe, powershell_ise.exe, powershellplus.exe, etc.) y no la versión del motor en sí.La versión del motor está contenida en
$psversiontable.psversion. Para PowerShell 1.0, esta variable no existe, por lo que, obviamente, si esta variable no está disponible, es completamente seguro asumir que el motor es 1.0, obviamente.fuente
Utilizar:
Puede descargar la secuencia de comandos detallada de Cómo determinar la versión instalada de PowerShell .
fuente
La forma más fácil de olvidar esta página y nunca volver a ella es aprender
Get-Variable:No hay necesidad de recordar todas las variables. Solo
Get-Variablees suficiente (y "Debe haber algo sobre la versión").fuente
$PSVersionTablePara verificar si PowerShell está instalado, use:
Para verificar si RC2 o RTM está instalado, use:
Fuente: este sitio web .
fuente
Como la respuesta más útil no abordaba la parte de si existe , pensé en darle una opinión a través de una solución rápida y sucia. Se basa en que PowerShell esté en la variable de entorno de ruta , que es probablemente lo que desea. (Sugerencia para la respuesta principal, ya que no lo sabía). Pegue esto en un archivo de texto y asígnele un nombre
o similar.
fuente
Necesitaba verificar la versión de PowerShell y luego ejecutar el código apropiado. Algunos de nuestros servidores ejecutan v5 y otros v4. Esto significa que algunas funciones, como comprimir, pueden o no estar disponibles.
Esta es mi solución:
fuente
El siguiente cmdlet devolverá la versión de PowerShell.
fuente
$PSVersionTablees una variable automática; un objeto. No es un cmdlet.Este es el resultado de búsqueda superior para "Archivo Batch obtener versión de PowerShell", por lo que me gustaría proporcionar un ejemplo básico de cómo hacer un flujo condicional en un archivo por lotes dependiendo de la versión de Powershell
Ejemplo genérico
Ejemplo del mundo real
fuente
También puede llamar al comando "host" desde la línea de comandos de PowerShell. Debería darte el valor de la
$hostvariable.fuente
hostresuelve aGet-Host. De todos modos, no es una forma confiable de obtener la versión.Extender la respuesta con un operador seleccionado:
fuente
Get-Host).